在 Ubuntu 20.04(和 22.04)上安装 dotnet-sdk-7.0 会破坏 net6.0 项目(net7.0 也不起作用)。此后需要构建 Sudo

Hac*_*loo 6 .net-core dotnet-sdk ubuntu-20.04 .net-7.0

我按照这些说明在 Ubuntu 20.04 上安装 dotnet。 安装sdk Ubuntu 20.04
此时的指令是: wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb

sudo apt-get update && \ sudo apt-get install -y dotnet-sdk-6.0
现在我可以构建net6.0项目了。

然后我安装7
sudo apt install dotnet-sdk-7.0

然后,当我尝试构建我的 net6.0 项目时,我得到:

CSC : warning CS8034: Unable to load Analyzer assembly /usr/share/dotnet/sdk/7.0.200/Sdks/Microsoft.NET.Sdk.Web/analyzers/cs/Microsoft.AspNetCore.Analyzers.dll : Could not load file or assembly 'Microsoft.AspNetCore.Analyzers, Version=7.0.3.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. Access is denied.
Run Code Online (Sandbox Code Playgroud)

在许多其他程序集上也出现同样的错误。当我尝试构建 net6.0 项目时,我不应该收到有关 net7.0 程序集的错误。如果我将 csproj 中的目标框架更改为 net7.0,则会出现相同的错误。

但是,如果我添加 sudo,我仍然可以将我的项目构建为 net6.0 和 net7.0。这些权限是您所期望的:

ls -l /usr/share/dotnet/sdk/7.0.200/Sdks/Microsoft.NET.Sdk.Web/analyzers/cs/Microsoft.AspNetCore.Analyzers.dll
-rw-r--r-- 1 root root 42664 jan 30 23:01 /usr/share/dotnet/sdk/7.0.200/Sdks/Microsoft.NET.Sdk.Web/analyzers/cs/Microsoft.AspNetCore.Analyzers.dll
Run Code Online (Sandbox Code Playgroud)

与对应的net6.0文件权限相同。

我试过这个:

  • 我卸载了所有 dotnet.
    sudo apt remove dotnet-sdk-6.0 dotnet-sdk-7.0 dotnet sudo apt clean autoclean autoremove
  • /usr/shar/dotnet 下什么也没有留下
  • 重新安装
  • 尝试添加:
export DOTNET_ROOT=/usr/share/dotnet
export PATH=$PATH:$DOTNET_ROOT
Run Code Online (Sandbox Code Playgroud)

这没有什么区别。
我的同事发现在Ubuntu 22.04上安装dotnet-sdk-7.0也破坏了构建net6.0项目的可能性。但我不知道这方面的所有细节。

dotnet --info 的一些输出

.NET SDK:
 Version:   7.0.200

.NET SDKs installed:
  6.0.406 
  7.0.200 

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.14
  Microsoft.AspNetCore.App 7.0.3 
  Microsoft.NETCore.App 6.0.14 
  Microsoft.NETCore.App 7.0.3 

Environment variables:
  Not set
global.json file:
  Not found
Run Code Online (Sandbox Code Playgroud)

Hac*_*loo 6

我对这个问题进行了新的尝试。我按照此处的说明进行操作:https ://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu#troubleshooting

两个 bash 指令,第一个是:

sudo dpkg --purge packages-microsoft-prod && sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update  
Run Code Online (Sandbox Code Playgroud)

然后是这个:

sudo apt-get install -y gpg
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/ubuntu/20.04/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-7.0
Run Code Online (Sandbox Code Playgroud)

然后突然就起作用了


小智 0

这是一个可怕的解决方法,但我也遇到了同样的问题,我发现dotnet build以 root 身份运行(即sudo dotnet build)可以让构建成功。

和你一样,我对参考文件的权限看起来很好。我怀疑 7.0 SDK 中存在一些内部工具,其安装权限不正确。

我的dotnet --info,供参考:

.NET SDK:
 Version:   7.0.201
 Commit:    68f2d7e7a3

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  22.04
 OS Platform: Linux
 RID:         ubuntu.22.04-x64
 Base Path:   /usr/share/dotnet/sdk/7.0.201/

Host:
  Version:      7.0.3
  Architecture: x64
  Commit:       0a2bda10e8

.NET SDKs installed:
  6.0.406 [/usr/share/dotnet/sdk]
  7.0.201 [/usr/share/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 7.0.3 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 7.0.3 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
Run Code Online (Sandbox Code Playgroud)