在 VSCode OmniSharp 扩展中找不到指定的 SDK 'Microsoft.NET.Sdk.Web'
The SDK 'Microsoft.NET.Sdk.Web' specified could not be found in VSCode OmniSharp extension
我已经在 VSCode 上安装了 dotnet core 3 sdk 和 OmniSharp 1.18 扩展
但是 OmniSharp 有一个错误:
Microsoft.Build.Exceptions.InvalidProjectFileException: 找不到指定的 SDK 'Microsoft.NET.Sdk.Web'。
- 此时应该是
v1.18.0-beta7
:https://github.com/OmniSharp/omnisharp-vscode/releases
- 此外,如果您只是在使用旧项目,请尝试通过发出
dotnet new globaljson --sdk-version 2.2.100
命令将适当的 global.json
文件添加到它们的根目录。否则他们将默认使用 .NET Core 3x SDK。如果您有 global.json
,请检查其内容并确保您使用的是正确的版本。您可以使用 dotnet --list-sdks
命令找到已安装的版本。
- 最好 report your issue here 以便他们可以在下一个测试版中修复它。
尝试以下解决方法:
将名为 omnisharp.json 的文件添加到您的项目文件夹,内容如下
{
"MsBuild": {
"UseLegacySdkResolver": true
}
}
然后重启Visual Studio代码
您需要从 Visual Studio 安装程序安装“.Net Core 构建工具”,如此处所述 - https://github.com/OmniSharp/omnisharp-roslyn/issues/1311#issuecomment-428361674
也可以用chocolatey安装:
choco install visualstudio2017-workload-netcorebuildtools
如果您使用的是 Linux 或 Mac,请将路径添加到 .bashrc
中的 sdk 文件夹(或您想要的任何其他位置):
export MSBuildSDKsPath=$HOME/soft/dev/dotnet/sdk/3.0.100-preview3-010431/Sdks
同样的行为也可以用这个命令解决:dotnet nuget locals all -c
Evgy 的回答将特别适用于 .NET Core Preview 3,但如果您希望修复程序适用于 .NET Core 3.0 或更高版本的发布版本,则可以将以下行添加到您的 .bashrc文件(假设你在 Linux):
export MSBuildSDKsPath="/usr/share/dotnet/sdk/$(dotnet --version)/Sdks"
我在使用 DotNet Core 3.0 和 VS Code 时遇到了这个问题。智能感知对我不起作用。
我安装了 Visual Studio 2019,这导致 Omnisharp 从以下位置获取 MsBuild:
C:\Program Files (x86)\Microsoft Visual Studio19\Professional\MSBuild\Current\Bin
根据 Omnisharp GitHub 上的一些答案,我从以下 link 安装了 Visual Studio Build Tools 2019:
https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16
为了防止 Omnisharp 从以前的路径获取 MsBuild,我将 MsBuild
文件夹重命名为 MsBuild.disabled
,这样路径就变成了:
C:\Program Files (x86)\Microsoft Visual Studio19\Professional\MSBuild.disabled\Current\Bin
现在,当我重新启动 VS Code 时,Omnisharp 从路径 C:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\MSBuild\Current\Bin
而不是以前的路径获取 MsBuild。错误消失了,intellisense 现在可以正常工作了。
在项目中的global.json文件中确保sdk版本与您在系统上安装的版本相同。
Ubuntu [20.04] Snap 用户的 Neits 解决方案。
echo 'export MSBuildSDKsPath="/snap/dotnet-sdk/current/sdk/$(dotnet --version)/Sdks"' >> ~/.bashrc
source ~/.bashrc
echo $MSBuildSDKsPath
这可能非常愚蠢,但在用谷歌搜索这个问题几个小时后,我放弃了,只是编写了我自己的构建任务来调用 dotnet build
而不是 msbuild
进入 tasks.json
:
{
"label": "build",
"type": "shell",
"command": "dotnet",
"args": [
"build",
],
"group": "build",
"presentation": {
"reveal": "silent"
},
"problemMatcher": "$msCompile"
}
这是我在 launch.json
中的启动配置:
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net5.0/${workspaceFolderBasename}.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"stopAtEntry": false
}
这可能不是正确的方法,但它让我运行我的代码并使用调试器的所有功能,所以我想这很好够了。
我有这个问题,上面的 none 个答案对我有用,我不知道为什么会这样
但我发现了一个小技巧来解决这个问题。
打开您的终端并转到您的项目目录并执行此命令
code .
是的!从终端打开 vscode 为我解决了这个问题
唯一对我有用的是退出 VSCode(我在 Mac)并重新安装 .NET SDK。
我已经在 VSCode 上安装了 dotnet core 3 sdk 和 OmniSharp 1.18 扩展 但是 OmniSharp 有一个错误: Microsoft.Build.Exceptions.InvalidProjectFileException: 找不到指定的 SDK 'Microsoft.NET.Sdk.Web'。
- 此时应该是
v1.18.0-beta7
:https://github.com/OmniSharp/omnisharp-vscode/releases - 此外,如果您只是在使用旧项目,请尝试通过发出
dotnet new globaljson --sdk-version 2.2.100
命令将适当的global.json
文件添加到它们的根目录。否则他们将默认使用 .NET Core 3x SDK。如果您有global.json
,请检查其内容并确保您使用的是正确的版本。您可以使用dotnet --list-sdks
命令找到已安装的版本。 - 最好 report your issue here 以便他们可以在下一个测试版中修复它。
尝试以下解决方法:
将名为 omnisharp.json 的文件添加到您的项目文件夹,内容如下
{
"MsBuild": {
"UseLegacySdkResolver": true
}
}
然后重启Visual Studio代码
您需要从 Visual Studio 安装程序安装“.Net Core 构建工具”,如此处所述 - https://github.com/OmniSharp/omnisharp-roslyn/issues/1311#issuecomment-428361674
也可以用chocolatey安装:
choco install visualstudio2017-workload-netcorebuildtools
如果您使用的是 Linux 或 Mac,请将路径添加到 .bashrc
中的 sdk 文件夹(或您想要的任何其他位置):
export MSBuildSDKsPath=$HOME/soft/dev/dotnet/sdk/3.0.100-preview3-010431/Sdks
同样的行为也可以用这个命令解决:dotnet nuget locals all -c
Evgy 的回答将特别适用于 .NET Core Preview 3,但如果您希望修复程序适用于 .NET Core 3.0 或更高版本的发布版本,则可以将以下行添加到您的 .bashrc文件(假设你在 Linux):
export MSBuildSDKsPath="/usr/share/dotnet/sdk/$(dotnet --version)/Sdks"
我在使用 DotNet Core 3.0 和 VS Code 时遇到了这个问题。智能感知对我不起作用。
我安装了 Visual Studio 2019,这导致 Omnisharp 从以下位置获取 MsBuild:
C:\Program Files (x86)\Microsoft Visual Studio19\Professional\MSBuild\Current\Bin
根据 Omnisharp GitHub 上的一些答案,我从以下 link 安装了 Visual Studio Build Tools 2019: https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16
为了防止 Omnisharp 从以前的路径获取 MsBuild,我将 MsBuild
文件夹重命名为 MsBuild.disabled
,这样路径就变成了:
C:\Program Files (x86)\Microsoft Visual Studio19\Professional\MSBuild.disabled\Current\Bin
现在,当我重新启动 VS Code 时,Omnisharp 从路径 C:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\MSBuild\Current\Bin
而不是以前的路径获取 MsBuild。错误消失了,intellisense 现在可以正常工作了。
在项目中的global.json文件中确保sdk版本与您在系统上安装的版本相同。
Ubuntu [20.04] Snap 用户的 Neits 解决方案。
echo 'export MSBuildSDKsPath="/snap/dotnet-sdk/current/sdk/$(dotnet --version)/Sdks"' >> ~/.bashrc
source ~/.bashrc
echo $MSBuildSDKsPath
这可能非常愚蠢,但在用谷歌搜索这个问题几个小时后,我放弃了,只是编写了我自己的构建任务来调用 dotnet build
而不是 msbuild
进入 tasks.json
:
{
"label": "build",
"type": "shell",
"command": "dotnet",
"args": [
"build",
],
"group": "build",
"presentation": {
"reveal": "silent"
},
"problemMatcher": "$msCompile"
}
这是我在 launch.json
中的启动配置:
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net5.0/${workspaceFolderBasename}.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"stopAtEntry": false
}
这可能不是正确的方法,但它让我运行我的代码并使用调试器的所有功能,所以我想这很好够了。
我有这个问题,上面的 none 个答案对我有用,我不知道为什么会这样 但我发现了一个小技巧来解决这个问题。
打开您的终端并转到您的项目目录并执行此命令
code .
是的!从终端打开 vscode 为我解决了这个问题
唯一对我有用的是退出 VSCode(我在 Mac)并重新安装 .NET SDK。