El SDK de .NET actual no admite la segmentación de .NET Core 2.1. Apunte a .NET Core 2.0 o una versión anterior, o use un SDK de .NET que admita .NET Core 2.1

81

han intentado actualizar a la versión profesional de Visual Studio 2017 v 15.6.0 (Vista previa 7.0)

e instaló aspnetcore-runtime-2.1.0-preview1-final-win-x64 y .net core SDK 2.1.4.

Cuando creé una nueva aplicación web, aparece un error que dice

"El SDK de .NET actual no admite la segmentación de .NET Core 2.1. Apunte a .NET Core 2.0 o una versión anterior, o use una versión del SDK de .NET que admita .NET Core 2.1".

Cuando intento construir un proyecto existente, aparece un error

"El SDK de .NET actual no admite la segmentación de .NET Core 2.1. Apunte a .NET Core 2.0 o una versión anterior, o use una versión del SDK de .NET que admita .NET Core 2.1".

No veo ".net core 2.1" en mi marco de destino

No tengo el archivo global.json en mi computadora

Cuando intento dotnet --info, obtengo esto

c: \ source \ dnacloud \ testapp> dotnet --info .NET Command Line Tools (2.1.100)

Product Information:
Version: 2.1.100
Commit SHA-1 hash: b9e74c6

Runtime Environment:
OS Name: Windows
OS Version: 10.0.16299
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\2.1.100\

Microsoft .NET Core Shared Framework Host

Version : 2.0.5
Build : 17373eb129b3b05aa18ece963f8795d65ef8ea54
usuario8559109
fuente
1
Esto es algo de vanguardia, cualquier versión 15.x.0 VS se rompe ágilmente por diseño. La solución alternativa no huele bien. Es muy importante usar Ayuda> Enviar comentarios> Informar un problema o esto no se solucionará lo suficientemente pronto.
Hans Passant
7
"roto por diseño" == mal diseño. Entiendo que MS quiere implementarse rápidamente, pero el infierno de dependencia que están reintroduciendo en el panorama del desarrollo me recuerda que
intenté

Respuestas:

69

El problema aquí es que Microsoft confundió a mucha gente con la forma en que numeraron sus SDK de .NET Core.

En el mensaje del póster original, la ruta C: \ Archivos de programa \ dotnet \ sdk \ 2.1.100 \ NO parece representar el tiempo de ejecución de .NET Core 2.1 (pero pensaría que sí).

Me encontré con esta publicación El SDK de .NET actual no admite la orientación a .NET Core 2.1 en developercommunity.visualstudio.com donde una persona de soporte de Microsoft explica la confusión:

"¡Gracias por sus comentarios! Hemos determinado que este problema no es un error. El primer SDK compatible con .NET Core 2.1 es 2.1.300-preview1. Sabemos que el control de versiones es confuso, por lo que a partir de 2.1.300, el Las versiones principales.minor del SDK ahora se alinearán con las versiones principales.minor del tiempo de ejecución también ".

Entonces ... para obtener soporte de .NET Core 2.1 para compilar a través del SDK, necesita instalar el SDK con la versión 2.1.300 al menos (ya que 2.1.2 NO es .NET Core 2.1) ... sí, confuso. Gracias Microsoft por el tiempo perdido en esto.

Cristian Satnic
fuente
22
"Hemos determinado que este problema no es un error" Yo lo llamaría un error.
Script Kitty
2
"Hemos determinado que esto es vergonzoso, así que no lo vamos a llamar error".
Chris B. Behrens
- se ve mal.
Christian
29

Esto me sucedió después de instalar 2.2.100-preview3-009430 y luego actualizar a Visual Studio 15.9.2.

Lo resolví habilitando la opción "Usar vistas previas de .NET Core SDK".

  1. Vaya a: Herramientas> Opciones> Proyectos y soluciones> .NET Core

  2. Marque la casilla "Usar vistas previas del SDK de .NET Core"

  3. Reinicie Visual Studio y reconstruya la solución.

Opciones de vista previa de VS

Dan Korycinski
fuente
¿Qué pasa con un servidor de compilación que solo tiene "herramientas de compilación" instaladas? No hay GUI allí.
springy76
1
Funcionó para NETSDK1045 El SDK de .NET actual no es compatible con la segmentación de .NET Core 3.0. al probar blazor
Vamsi J
2
No hay tal opción en el VS v.16.1
Eugene Maksimov
9
Se movió a Herramientas> Opciones> Entorno> Funciones de vista previa
Ludwo
18

Instalando .NET Core SDK 2.1.300-preview2 hizo el truco para mí:

ACTUALIZACIÓN: por si acaso, hay una versión más nueva que se ha lanzado recientemente. Puede descargar el nuevo SDK de .NET Core para 2.2.0-preview1 (que incluye ASP.NET 2.2.0-preview1) aquí .

Consulte también esta respuesta cuando reciba un error como este en general:

El SDK de .NET actual no admite la segmentación de .NET Core 2.X

Dmitry Pavlov
fuente
Mi solución no se compila, pero ahora IIS Express está escupiendo este error 'MACHINE / WEBROOT / APPHOST / ORCHARDCORE.CMS.WEB' con raíz física 'C: \ Projects \ OrchardCore \ src \ OrchardCore.Cms.Web \' no pudo iniciar el proceso con la línea de comandos 'C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ Extensions \ Microsoft \ Web Tools \ ProjectSystem \ VSIISExeLauncher.exe -argFile "C: \ Users \ daves \ AppData \ Local \ Temp \ tmp221C.tmp "', ErrorCode =' 0x80004005: 0.
David Sopko
@DavidSopko lo más probable es que deba ocuparse de las variables de entorno LAUNCHER_PATH y LAUNCHER_ARGS blog.lextudio.com/…
Dmitry Pavlov
13

Resolví el problema. la causa fue que instalé

  • aspnetcore-runtime-2.1.0-preview1-final-win-x64 y
  • .net core SDK 2.1.4-x64 Versiones
  • La instalación colocó los archivos sdk en c:\Program Files\dotnet
  • pero VS2017 32bit estaba buscando los archivos sdk en formato c:\Program Files(x86)\dotnet.

Para resolver esto yo

  • instaló la versión x86 del tiempo de ejecución sdk y aspnetcore,

  • establezca la variable de entorno MSBuildSDKsPath para que apunte a la nueva ruta de instalación.

  • eliminó todos los sdks obsoletos del panel de control

La pregunta VS2017 Update 3 'Microsoft.NET.Sdk.Web' no se pudo encontrar y ayudó a resolver este problema.

usuario8559109
fuente
Estoy enfrentando el mismo problema e instalé aspnetcore-runtime-2.1.0-preview1-final-win-x64 probablemente en algún lugar el mes pasado. No recuerdo desde dónde lo instalé y no pude ver ningún enlace ahora disponible ahora para dicha descarga (espero que esa página tenga este problema discutido) ¿Desde dónde instaló la versión x86? ¿Puede agregar más descripción a su respuesta, ya que parece un problema común?
rahulaga_dev
1
@RahulAgarwal Un poco tarde para el juego, pero si aún no has encontrado la página de descarga correcta, es: microsoft.com/net/download/windows Haz clic en el enlace de descarga x86 .
Carsten Gehling
12

https://www.microsoft.com/net/download/visual-studio-sdks

Puede descargar el SDK desde el sitio anterior

verifique el SDK que se encuentra en la ruta de su máquina C: \ Archivos de programa \ dotnet \ sdk

Cambie o verifique el marco de destino en Visual Studio,

Haga clic con el botón derecho en Aplicación de inicio o proyecto => Aplicación => Marco de destino.

Puede cambiar el marco y crear la solución y restaurar los paquetes de nugget.

ingrese la descripción de la imagen aquí

GirishBabuC
fuente
Recibí el error OP después de agregar un proyecto de biblioteca de clases (.NET Core). Resulta que el marco de destino no estaba configurado de forma predeterminada, así que todo lo que tenía que hacer era seleccionarlo del menú desplegable y guardar, problema resuelto.
jhhwilliams
7

Lo mismo me pasó a mí, pero luego para la versión 2.2 de .NET Core. Instalé la última versión de .NET Core 2.2 SDK, que era 2.2.202 en ese momento. Visual Studio me permitió crear un nuevo proyecto para Core 2.2, pero mostraba el error:

"El SDK de .NET actual no admite la segmentación de .NET Core 2.2. Apunte a .NET Core 2.1 o una versión anterior, o utilice una versión del SDK de .NET que admita .NET Core 2.2".

El marco de destino de mi proyecto estaba vacío y el menú desplegable no mostraba 2.2.

Después de instalar .NET Core SDK 2.2.103, el error desapareció y el menú desplegable mostró ".NET Core 2.2".

Jamie
fuente
2

Detener IIS para publicar resolvió el problema. Pero primero necesitaba instalar net core 2.1 SDK y actualizar Visual Studio.

Ongun23
fuente
2

Tenía instalado .Net Core SDK 2.1.4 y seguí las otras respuestas en esta publicación sin resolver mi problema. Lo que finalmente hizo por mí fue instalar .Net Core SDK versión 2.1.301 y desinstalar todas las demás versiones. Parece que el SDK 2.1.4 no puede apuntar a .Net Core 2.1, pero el SDK 2.1.301 hace el trabajo.

sanfalero
fuente
¿Significa esto que Visual Studio no está usando SDK 2.1.401 incluso cuando está instalado junto a 2.1.301?
Bart VdA
2

Verifique que no tenga un global.jsonarchivo en la carpeta raíz de su proyecto que obligue a su proyecto a usar solo .NET SDK 2.1.

Si tiene este archivo global.json, elimínelo y luego reinicie Visual Studio.

Por vergonzoso que parezca, pasé casi una hora retocando e incluso descargué varias versiones del SDK para obligarlo a usar la 2.2.

Rosdi Kasim
fuente
2

También resolví el problema de esta manera:

Verifique las versiones disponibles en dotnet sdk

C:\Users\me>dotnet --list-sdks

 ##2.1.202 [C:\Program Files\dotnet\sdk]
 ##2.1.505 [C:\Program Files\dotnet\sdk]
 ##2.1.508 [C:\Program Files\dotnet\sdk]
 ##2.1.509 [C:\Program Files\dotnet\sdk]
 ##2.1.511 [C:\Program Files\dotnet\sdk]
 ##2.1.514 [C:\Program Files\dotnet\sdk]
 ##2.1.801 [C:\Program Files\dotnet\sdk]

Probé mi compilación en todas esas versiones y no funciona hasta que desinstale todo lo anterior de Programas y características. Luego, descargue de la última versión:

https://dotnet.microsoft.com/download/dotnet-core/thank-you/sdk-3.1.300-windows-x64-installer

Esto funcionó. No pierda el tiempo como si acabara de instalar la última versión de dotnet sdk y listo. "

Tawanda Ziki
fuente
1

Estoy usando Rider, tenía

El SDK de .NET actual no admite la segmentación de .NET Core 2.2. Apunte a .NET Core 2.1 o una versión anterior, o use una versión del .NET SDK que admita .NET Core 2.2

Tuve:

$ dotnet --list-sdks
2.1.2 [C:\Program Files\dotnet\sdk]
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.505 [C:\Program Files\dotnet\sdk]
2.1.602 [C:\Program Files\dotnet\sdk]
2.2.202 [C:\Program Files\dotnet\sdk]

Intenté mantener solo el último sdk y tuve:

Error al cargar el proyecto 'WebApplication3': no ​​se pudo encontrar el SDK 'Microsoft.NET.Sdk.Web' especificado.

Así que eliminé todo y reinstalé 2.1.602. Hizo un nuevo proyecto de Rider. Y funcionó . No puedo decir que entendí cómo lo resolví ...

Los problemas para algunas personas parecen estar vinculados a global.json, consulte:
- https://docs.microsoft.com/fr-fr/aspnet/core/migration/21-to-22?view=aspnetcore-2.2&tabs= estudio-visual
- https://docs.microsoft.com/fr-fr/dotnet/core/tools/global-json
- https://andrewlock.net/the-sdk-microsoft-net-sdk-web-specified- no pudo ser encontrado/

Otras cosas que hice antes (que no parecieron resolver el problema pero podrían haber ayudado):
- Actualización de Rider de 2018.3.2 a 2018.3.4 (más reciente). - Instalando Mono (estaba usando el de Unity cuando miraba en la configuración de compilación de Rider).
- Intenté usar MSBuild personalizado de Jetbrain (el que se usa para Linux) sin éxito.
- Instalando todo lo relacionado con .NET Core desde el instalador VS.
- Actualización de la comunidad VS más reciente. - Reiniciar.

En Rider/Build, Execution, Deployement/Toolset and Buildahora tengo:
Mono ejecutable: C:\Program Files\Mono\bin\mono.exe
- NET Core CLI ejecutable: C:\Program Files\dotnet\dotnet.exe
- Use la versión de MS Build (Auto detectado 16.0):C:\Program - Files\dotnet\sdk\2.1.602\MSBuild.dll

Ambroise Rabier
fuente
Estoy bastante seguro de que tiene que ver con la última línea de su publicación: entonces, qué versión de MSBuild Rider está usando realmente. Debe apuntar al que proporciona el SDK de .NET Core más reciente que desea usar; de lo contrario, algo está mal y debe reinstalar el SDK ...
rsenna
0

Comencé a recibir este error después de instalar SDK 2.2.300. Después de leer esta publicación y algunas otras, la bajé a SDK 2.2.1xx y el error desapareció. Nota: tuve que desinstalar SDK 2.2.300 y reiniciar después de instalar SDK 2.2.1xx.

Johnny Chu
fuente
0

Tuve este problema e hice una nueva instalación de VS2017. ¡Eso lo arregló!

Paul Lewallen
fuente
0

Ve a tu canalización. Haga clic en Editar canalización. Haga clic en el menú desplegable Especificación del agente. Cámbielo a Windows 2019. Haga clic en Guardar y poner en cola.

Y aquí tienes. Funcionó bien para mí.

Mashal Aman
fuente
-1

Parece que Microsoft está fomentando una mejor práctica de codificación para aquellos primeros en adoptar el software de desarrollo más reciente en Net Core 2.1 al eliminar la capacidad de usar software más antiguo donde prevalecen los malos hábitos. Net Core 2.0 y las versiones anteriores están casi al final de su vida útil, por lo que no deberían usarse en absoluto. ( https://blogs.msdn.microsoft.com/dotnet/2018/06/20/net-core-2-0-will-reach-end-of-life-on-september-1-2018/ )

1) Microsoft ha eliminado ServiceLocator ya que se considera ampliamente un anti-patrón que resulta en código difícil de entender.

2) Para mejorar las aplicaciones MVC, el AccountController fue eliminado de Autenticación / Autorización para fomentar el uso de páginas de Razor que implementan el Principio de Responsabilidad Única.

No se consideraría una buena práctica eludir estos cambios para aumentar la perpetuación del software creado para estándares de ingeniería de software más bajos en el pasado.

Lance Parkington
fuente