C# MSBUILD抛出错误:SDK';微软.NET.Sdk';找不到指定的
我正在尝试使用msbuild命令行生成解决方案,但始终出现以下错误:C# MSBUILD抛出错误:SDK';微软.NET.Sdk';找不到指定的,c#,.net,msbuild,.net-core,C#,.net,Msbuild,.net Core,我正在尝试使用msbuild命令行生成解决方案,但始终出现以下错误: 错误MSB4236:找不到指定的SDK“Microsoft.NET.SDK”。 msbuild的版本是microsoft visual studio 2017 tools的最新版本。我使用的是Windows Server 2012 R2,项目使用的是.NET Core 2.0 这是我正在使用的命令: msbuild.exe/p:Configuration=Release/t:restore C:\Projects\MyProj
错误MSB4236:找不到指定的SDK“Microsoft.NET.SDK”。
msbuild的版本是microsoft visual studio 2017 tools的最新版本。我使用的是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)
我在尝试安装.NETCore2.0并将其搞砸之后遇到了这个错误。对于
dotnet restore
、dotnet build
或dotnet msbuild
,我会得到相同的错误。本质上,任何涉及.NETCore和msbuild的内容
发生错误的原因是MSBuildSDKsPath
环境变量仍指向旧的.Net Core 1.1 SDK
为了解决这个问题,我手动将MSBuildSDKsPath
环境变量设置为指向2.0.0的SDK路径,对于使用x64的我来说,该路径位于:C:\Program Files\dotnet\SDK\2.0.0\Sdks
基本上,如果在
.csproj
中有Sdk=“Microsoft.NET.Sdk”
,则在MSBuildSDKsPath
位置应该存在一个同名文件夹。可能是在安装.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
尝试安装x64.Net Core SDK安装程序时遇到相同问题。 事件下面的
dotnet--info
命令显示未找到SDK
因此,请尝试安装x86.Net核心SDK安装程序。这对你有帮助 我也遇到了同样的问题,并在这里找到了解决方案: 解决方案是只使用x64或x86版本的sdk/runtime/hosting。 如果两者都有,并且使用例如x86版本的dotnet.exe,则不会看到安装了x64版本的SDK
安装托管捆绑包时通常会出现问题,因为它同时包含x86和x64。只需卸载一个不使用的软件。对我来说,解决方案是在global.json文件中设置sdk版本: 并指定存在于C:\Program Files\dotnet\sdk文件夹中的正确版本。VS安装程序卸载了.NET Core 3.0.100的早期版本,并安装了新版本3.1.100,因此我不得不将其从以下版本更改为:
{ "sdk": { "version": "3.0.100" }}
到
对于像我一样在Linux上遇到此问题并发现此线程的任何人: 出现此问题的原因是.bashrc config使用过时的值覆盖MSBuildSDKsPath环境变量(很可能是dotnet包更新后的遗留值)。要解决这个问题:
~/.bashrc
MSBuildSDKsPath
变量初始化的行,例如我在Mac OS中遇到了这个问题,在使用docker容器和Azure时出现了这个问题,因为docker bash覆盖了MSBuildSDKsPath,所以不要
更改任何代码只需退出并重新启动IDE(visual studio Mac)并再次运行它安装VS工具时,您可能缺少一些组件
如果您以前使用过C#,但它不知何故停止工作:
对于我来说,使用“Visual Studio安装程序”更新到最新版本(可能是构建工具)解决了此问题。我通过直接从软件包管理器控制台安装软件包来解决此问题:
安装软件包NETStandard.Library-version2.0.3我猜项目引用了该SDK。而且为了针对它进行构建,必须安装它。否则编译器怎么能做typechkes和所有其他的东西呢?@Christopher我用完整的日志编辑了这篇文章。是的,我的项目引用了那个SDK,但我正在尝试恢复它。正如我所想的。编译器找不到SDK。您需要将它与编译器一起安装才能生成。理想情况下,选择默认位置。如果没有,您可能需要编辑项目,以便它在正确的位置查找SDK。但是我已经安装了.NET Core 2.0 SDK。那么,我是否必须编辑项目文件,还是需要在安装MSBuild的同一位置重新安装.NET Core SDK?如果找到了解决方案,请发布为answer并接受它。谢谢,我必须创建一个新的系统环境变量,因为我没有
MSBuildSDKsPath
,然后我在那里抛出了最新的sdk路径C:\Program Files\dotnet\sdk\2.1.500\sdk
。错误只发生在我们的TeamCity构建服务器上。仅使用.Net Core SDK安装MS构建工具是不够的。我还必须创建MSBuildSDKsPath
,并将值设置为C:\Program Files\dotnet\sdk\3.1.101\sdk
。谢谢@SebastianI让TeamCity代理在Windows Server 2008 R2上运行,这对我很有用。我确实必须重新启动机器才能让它识别新的环境变量。在我的情况下,我必须安装“.net核心构建工具”。它在构建工具的初始设置屏幕上-我通常直接跳到单个组件。在这里使用TeamCity&忘记了将.NET核心构建工具作为Visual Studio(MS)构建工具的一部分进行安装。不需要路径MSBuildSDKsPath
,感谢您,因为我没有尝试
{ "sdk": { "version": "3.1.100" }}