Estoy tratando de construir una solución usando la línea de comandos de msbuild y sigo recibiendo este error:
error MSB4236: The SDK 'Microsoft.NET.Sdk' specified could not be found.
La versión de msbuild es la última de las herramientas de Microsoft Visual Studio 2017. Estoy usando Windows Server 2012 R2 y el proyecto usa .NET Core 2.0.
Este es el comando que estoy usando:
msbuild.exe /p:Configuration=Release /t:restore C:\Projects\MyProject.sln
Registro completo:
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)
Empecé a recibir este error después de instalar Visual Studio 2022 en Windows 10, cuando abrí mi solución. La solución contiene una combinación de proyectos .NET Framework 4.8 y .NET Standard 2.0, y el error estaba en los proyectos .NET Standard 2.0. Anteriormente tenía instaladas Visual Studio 2019 y 2019 Build Tools.
El problema era que tenía instalados x86 y x64 de dotnet
, y ambos estaban en la variable de entorno PATH de mi sistema:
C:\Program Files (x86)\dotnet C:\Program Files\dotnet
Hice los siguientes pasos para corregir este error:
Creo que la parte importante fue eliminar x86 de la variable de entorno. Los otros pasos fueron simplemente "limpiar".
Si ha trabajado anteriormente con C# y de alguna manera dejó de funcionar:
Para mí, actualizar a la última versión (probablemente de las herramientas de compilación) con el "Instalador de Visual Studio" resolvió el problema.
Resuelvo el problema instalando el paquete directamente desde la consola del Administrador de paquetes:
Paquete de instalación NETStandard.Library -Versión 2.0.3
Para mí, la actualización de Visual Studio Build Tools resultó en el error 'SDK not found'.
La solución: ejecute Visual Studio Installer, modifique la instalación de Visual Studio (Build Tools) y asegúrese de que esté seleccionada la siguiente carga de trabajo:
Probablemente le faltaban algunos componentes cuando instaló las herramientas VS
Descargue y ejecute Herramientas de compilación para Visual Studio 2019 . (En la página de descarga de VS, vaya a Herramientas para Visual Studio 2019 y luego haga clic en descargar Herramientas de compilación para Visual Studio 2019 )
Seleccione Modificar en Visual Studio Build Tools 2019 o su instancia.
Seleccione la pestaña Componentes individuales y verifique el componente .NET Core SDK
Encontré este error después de jugar con la instalación de .Net Core 2.0 y aparentemente estropearlo. Obtendría este mismo error para dotnet restore
, dotnet build
o dotnet msbuild
. Esencialmente, cualquier cosa que involucre .Net Core y msbuild.
El error se produjo porque la variable de entorno MSBuildSDKsPath
todavía apuntaba al antiguo SDK de .Net Core 1.1.
Para solucionar el problema, configuré manualmente la variable de entorno MSBuildSDKsPath
para que apunte a la ruta SDK de 2.0.0, que, para mí con x64, estaba en: C:\Program Files\dotnet\sdk\2.0.0\Sdks
.
Básicamente, si tiene Sdk="Microsoft.NET.Sdk"
en su .csproj
, entonces debería existir una carpeta con el mismo nombre en su ubicación de MSBuildSDKsPath
.
Tal vez encontró el error después de instalar .NET core SDK 3.0. Debe verificar la variable de entorno MSBuildSDKsPath
después de cada instalación de un nuevo SDK. Debe apuntar al SDK que usa para crear su proyecto. Uso VS2017 con Windows 10.
Para SDK 2.2:
C:\Program Files\dotnet\sdk\2.2.104\Sdks
Para la vista previa de 3.0:
C:\Program Files\dotnet\sdk\3.0.100-preview3-010431\Sdks
Tuve el mismo problema cuando intenté instalar el instalador x64 .Net Core SDK. Incluso el siguiente comando dotnet --info
me muestra que no se encuentra ningún SDK.
Por lo tanto, intente instalar el instalador x86 .Net Core SDK. Eso puede ayudarte.
para mí, la solución fue configurar la versión sdk en el archivo global.json:
y especifique la versión correcta que existe en la carpeta C:\Program Files\dotnet\sdk. El instalador de VS desinstaló la versión anterior de .NET Core 3.0.100 e instaló una nueva 3.1.100, así que tuve que cambiarla de:
{ "sdk": { "version": "3.0.100" }}
para
{ "sdk": { "version": "3.1.100" }}
Para cualquiera que, como yo, se encuentre con este problema en Linux y haya encontrado este hilo:
Este problema ocurre porque su configuración .bashrc anula la variable de entorno MSBuildSDKsPath con un valor obsoleto (lo más probable es que sea un remanente después de la actualización del paquete dotnet). Para resolver esto:
~/.bashrc
MSBuildSDKsPath
, por ejemploexportar MSBuildSDKsPath="/opt/dotnet/sdk/2.2.108/Sdks/"
Tuve el mismo problema y encontré la solución aquí: https://github.com/aspnet/AspNetCore/issues/3624
La solución es simplemente tener una versión x64 o x86 de sdk/runtime/hosting. Si tiene ambos y usa, por ejemplo, la versión x86 de dotnet.exe, no verá instaladas las versiones x64 del SDK.
El problema generalmente ocurre cuando instala un paquete de alojamiento porque incluye tanto x86 como x64. Simplemente desinstale uno que no use.
Recibí este problema en Mac OS y, al usar el contenedor docker y Azure, esto ocurre porque docker bash anula MSBuildSDKsPath, así que no cambie ningún código, simplemente cierre y reinicie su IDE (visual studio Mac) y ejecútelo nuevamente