C# MSBUILD抛出错误:SDK';微软.NET.Sdk';找不到指定的

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

我正在尝试使用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\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
    变量初始化的行,例如
  • 导出MSBuildSDKsPath=“/opt/dotnet/sdk/2.2.108/Sdks/”


    我在Mac OS中遇到了这个问题,在使用docker容器和Azure时出现了这个问题,因为docker bash覆盖了MSBuildSDKsPath,所以不要
    更改任何代码只需退出并重新启动IDE(visual studio Mac)并再次运行它

    安装VS工具时,您可能缺少一些组件

  • 下载并运行。(在VS下载页面上,转到适用于Visual Studio 2019的工具,然后单击下载适用于Visual Studio 2019的构建工具

  • 在Visual Studio Build Tools 2019或您的实例上选择“修改”。

  • 选择选项卡单个组件并选中.NET核心SDK组件


  • 如果您以前使用过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"  }}