MSBUILD抛出错误:SDK' Microsoft.NET.Sdk'指定无法找到

时间:2017-09-16 18:54:47

标签: c# .net msbuild .net-core

我正在尝试使用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)

9 个答案:

答案 0 :(得分:22)

我在使用.Net Core 2.0安装后遇到了这个错误,似乎弄得一团糟。我会为dotnet restoredotnet builddotnet 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工具时,您可能缺少某些组件

  1. 下载并运行Build Tools for Visual Studio 2019。 (在VS下载页面上,转到 Visual Studio 2019的工具,然后单击下载 Building Visual Studio 2019的工具

  2. Visual Studio Build Tools 2019 或您的实例上选择“修改”。 enter image description here

  3. 选择选项卡单个组件,然后选中 .NET Core SDK 组件 enter image description here

答案 3 :(得分:1)

对我来说,解决方案是在global.json文件中设置sdk版本: solution items global.json

,并指定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软件包更新后的剩余变量)。要解决这个问题:

  1. 编辑~/.bashrc
  2. 删除带有MSBuildSDKsPath变量初始化的行,例如

export MSBuildSDKsPath =“ / opt / dotnet / sdk / 2.2.108 / Sdks /”

答案 8 :(得分:0)

我通过直接从包管理器控制台安装包来解决这个问题:

安装包 NETStandard.Library -Version 2.0.3