MSBUILD выдает ошибку: указанный SDK "Microsoft.NET.Sdk" не найден

Я пытаюсь построить решение с помощью командной строки msbuild, и я продолжаю получать эту ошибку:

error MSB4236: The SDK 'Microsoft.NET.Sdk' specified could not be found.

Версия msbuild является последней из средств Microsoft 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)

Ответ 1

Я столкнулся с этой ошибкой после игры с установкой .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.

В принципе, если у вас Sdk="Microsoft.NET.Sdk" в вашем .csproj, тогда папка с тем же именем должна существовать в вашем MSBuildSDKsPath месте.

Ответ 2

Может быть, вы допустили ошибку также после установки .net core SDK 3.0, Вы должны проверять переменную среды MSBuildSDKsPath после каждой установки нового SDK. Он должен отслеживать SDK, который вы используете для создания своего проекта. Я использую VS2017 с Windows 10.

для 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 

Ответ 3

Возникла та же проблема при попытке установить x64.Net Core SDK Installer. Событие следующая команда dotnet --info показывает мне, что SDK не найден.

Итак, попробуйте установить x86.Net Core SDK установщик. Это может помочь вам.

Ответ 4

У меня была такая же проблема, и я нашел решение здесь: https://github.com/aspnet/AspNetCore/issues/3624

Решение состоит в том, чтобы просто иметь x64 или x86 версию sdk/runtime/hosting. Если у вас есть оба, и если вы используете, например, x86-версию dotnet.exe, он не увидит x64-версии установленного SDK.

Проблема обычно возникает при установке пакета хостинга, поскольку он включает в себя как x86, так и x64. Просто удалите тот, который вы не используете.