我正在尝试使用msbuild命令行构建解决方案,并且我一直收到此错误:
error MSB4236: The SDK 'Microsoft.NET.Sdk' specified could not be found.
msbuild的版本是微软Visual Studio 2017工具的最新版本。我使用的是Windows Server 2012 R2,该项目使用的是.NET Core 2.0。
这是我使用的命令:
msbuild.exe /p:Configuration=Release /t:restore C:\Projects\MyProject.sln
完整日志:
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
Build started 9/16/2017 3:09:03 PM.
Project "C:\Projects\MyProject.sln" on node 1 (restore target(s)).
ValidateSolutionConfiguration:
Building solution configuration "Release|Any CPU".
Project "C:\Projects\MyProject.sln" (1) is building "C:\Projects\Kernel\Kernel.csproj" (2) on node 1 (restore target(s)).
C:\Projects\MyProject.sln" (1) is building "C:\Projects\Kernel\Kernel.csproj : error MSB4236: The SDK 'Microsoft.NET.Sdk' specified could not be found.
Done Building Project "C:\Projects\MyProject.sln" (1) is building "C:\Projects\Kernel\Kernel.csproj" (restore target(s)) -- FAILED.
Build FAILED.
"C:\Projects\MyProject.sln" (restore target) (1) ->
"C:\Projects\Kernel\Kernel.csproj" (restore target) (2) ->
C:\Projects\Kernel\Kernel.csproj : error MSB4236: The SDK 'Microsoft.NET.Sdk' specified could not be found.
0 Warning(s)
11 Error(s)
答案 0 :(得分:22)
我在使用.Net Core 2.0安装后遇到了这个错误,似乎弄得一团糟。我会为dotnet restore
,dotnet build
或dotnet msbuild
收到同样的错误。基本上,涉及.Net Core和msbuild的任何事情。
发生错误是因为MSBuildSDKsPath
环境变量仍然指向旧的.Net Core 1.1 SDK。
要解决此问题,我手动将MSBuildSDKsPath
环境变量设置为指向2.0.0的SDK路径,对于x64,我的位置为:C:\Program Files\dotnet\sdk\2.0.0\Sdks
。< / p>
基本上,如果Sdk="Microsoft.NET.Sdk"
中有.csproj
,则MSBuildSDKsPath
位置应该存在同名的文件夹。
答案 1 :(得分:2)
我在Mac OS中遇到此问题,并且在使用docker容器和Azure时会发生此问题,因为docker bash覆盖了MSBuildSDKsPath,所以不要 更改任何代码即可,然后退出并重新启动IDE(Visual Studio Mac)并再次运行
答案 2 :(得分:2)
在安装VS工具时,您可能缺少某些组件
下载并运行Build Tools for Visual Studio 2019。 (在VS下载页面上,转到 Visual Studio 2019的工具,然后单击下载 Building Visual Studio 2019的工具)
答案 3 :(得分:1)
对我来说,解决方案是在global.json文件中设置sdk版本:
,并指定C:\ Program Files \ dotnet \ sdk文件夹中存在的正确版本。 VS安装程序卸载了先前版本的.NET Core 3.0.100,并安装了一个新的3.1.100,因此我必须将其更改为:
{ "sdk": { "version": "3.0.100" }}
到
{ "sdk": { "version": "3.1.100" }}
答案 4 :(得分:0)
安装.net core SDK 3.0之后,您是否还可能会错误提示, 每次安装新的SDK后,您必须检查环境变量MSBuildSDKsPath。 它必须遍历用于创建项目的SDK。我在Windows 10上使用VS2017。
对于2.2 SDK
C:\Program Files\dotnet\sdk\2.2.104\Sdks
用于3.0预览
C:\Program Files\dotnet\sdk\3.0.100-preview3-010431\Sdks
答案 5 :(得分:0)
尝试安装 x64 .Net Core SDK安装程序时遇到了相同的问题。
事件发生以下dotnet --info
命令显示没有找到SDK。
因此,请尝试安装 x86 .Net Core SDK安装程序。那可以帮助你。
答案 6 :(得分:0)
我遇到了同样的问题,并在这里找到了解决方案: https://github.com/aspnet/AspNetCore/issues/3624
解决方案是仅使用x64或x86版本的sdk / runtime / hosting。 如果您同时拥有两者,并且使用的是x86版本的dotnet.exe,则不会看到安装了x64版本的SDK。
安装主机捆绑包时通常会出现问题,因为它同时包含x86和x64。只需卸载不使用的计算机即可。
答案 7 :(得分:0)
对于像我一样在Linux上遇到此问题并找到此线程的任何人:
会发生此问题,因为您的.bashrc配置使用过期值覆盖了MSBuildSDKsPath环境变量(很可能是dotnet软件包更新后的剩余变量)。要解决这个问题:
~/.bashrc
MSBuildSDKsPath
变量初始化的行,例如export MSBuildSDKsPath =“ / opt / dotnet / sdk / 2.2.108 / Sdks /”
答案 8 :(得分:0)
我通过直接从包管理器控制台安装包来解决这个问题:
安装包 NETStandard.Library -Version 2.0.3