El SDK de .NET actual no admite el error de .NET Standard 2.0 de destino en la actualización 15.3 de Visual Studio 2017

119

Quiero crear un proyecto de biblioteca de clases con Target Framework .NET Standard 2.0.

Actualicé mi Visual Studio 2017versión 15.3y también en el instalador de Visual Studio, verifiqué .NET Framework 4.7 SDKy .NET Framework 4.7 targeting packmanualmente y los instalé.

Todavía no hay ninguna .NET Standard 2.0opción en el cuadro combinado de Target Framework en la ventana Proyecto / Aplicación. Así que cambié la etiqueta TargetFramework en el .csprojarchivo manualmente a netstandard2.0, pero después de intentar compilar aparece este error:

El SDK de .NET actual no admite la segmentación de .NET Standard 2.0. Apunte a .NET Standard 1.6 o inferior, o use una versión del .NET SDK que admita .NET Standard 2.0.

sahar
fuente
4
¿Tiene un global.jsonarchivo que ancle su SDK de .NET Core a 1.x? ¿Ha instalado .NET Core 2.0 SDK por separado? ( Esperaría que se incluyera con VS, pero no estaría de más instalarlo de todos modos.)
Jon Skeet
1
@JonSkeet La instalación de .NET Core 2.0 SDK funcionó por separado. Sería bueno si agrega su sugerencia como respuesta aquí.
sahar

Respuestas:

144

Parece que la instalación de la actualización VS2017 para esa versión específica no instaló también el SDK de .NET Core 2.0. Puede descargarlo aquí .

Para comprobar qué versión del SDK ya tiene instalada, ejecute

dotnet --info

desde la línea de comando. Tenga en cuenta que si hay un global.jsonarchivo en su directorio de trabajo actual o en cualquier directorio anterior, eso anulará qué versión del SDK se ejecuta. (Eso es útil si desea aplicar una versión particular para un proyecto, por ejemplo).

A juzgar por los comentarios, algunas versiones de VS2017 actualizaciones hacen instalar el Core SDK de .NET. Sospecho que puede variar algo con el tiempo.

Jon Skeet
fuente
1
@Marwie: Para apuntar a netstandard2.0, sospecho que sí. No he intentado apuntar a eso con el SDK 1.0, pero no me sorprendería si fallara. Por supuesto, aún puede apuntar a netstandard1.X con el SDK 1.0.
Jon Skeet
6
Ok, soy nuevo en el tema, me sorprendió la estrecha relación entre .net core y .net estándar, ¿no fue la razón para crear el estándar .net para omitir tales dependencias? ¿Por qué no se enviaría en un paquete separado?
Marwie
1
@Marwie: Bueno, .NET Core SDK es independiente de .NET Core Runtime, que es independiente de .NET Standard. Pero el SDK "conoce" un conjunto de marcos de destino, y no me sorprende que no funcione con uno futuro . Es como esperar que Visual Studio 2013 compile código C # 7. Si bien sería posible que MS lo haya diseñado para que no necesite el SDK de .NET Core 2.0 para apuntar a netstandard2.0, sería un caso de uso extraño querer eso de todos modos, en mi opinión.
Jon Skeet
3
Recibí el error después de desinstalar todos los SDK de .net Core 1.x. Todavía tenía Microsoft. .NET core SDK 2.0.2, 2.0.3, 2.1.1 y 2.1.2 instalado y VS 2017 5.2. Una vez hice una instalación manual de la versión actual de Microsoft. .NET core SDK (2.1.3) Podría volver a compilar mis proyectos. Me pregunto por qué al eliminar los SDK 1.x se rompieron los SDK 2.x.
Desarrollador SOHO
2
@Justin: Bien, eso suena a que el SDK 2.1.4 no se ha instalado correctamente o tienes un archivo global.json fijándolo a una versión anterior.
Jon Skeet
20

mientras que las respuestas anteriores no resolvieron mi problema. Finalmente lo resolví yendo específicamente a este enlace https://www.microsoft.com/net/download/visual-studio-sdks y descargué el sdk requerido para Visual Studio . Fue realmente confuso y no entiendo por qué, pero eso resolvió mi problema.

Johnny Camby
fuente
No puedo simplemente votar esto, esto también resolvió mi problema, pero espero que alguien aclare la razón detrás de esto.
Beytan Kurt
Esta solución también funcionó para mí. Para mí fue una cuestión de incompatibilidad con el último SDK. Si usa Visual Studio 2017, no puede usar la última versión del SDK de .NET Core.
cero
11

Para mí, la solución fue cambiar la versión global.jsonpara reflejar la instalada.

Como dijeron los demás, la versión se puede encontrar ejecutándose dotnet --infoen cmd

Esta:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "2.0.3"
  }
}

Convirtió:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "2.1.4"
  }
}

También puede crear el archivo global.json ejecutando

dotnet new globaljson --sdk-version 2.1.4

en la raíz del proyecto

lsp
fuente
2
¿Dónde se encontraría ese global.jsonarchivo si existiera?
Bruno Bieri
Creo que ms eliminó ese archivo, verifique sus archivos .sln y .csproj :)
lsp
2
El archivo global.jsonestaría al lado del archivo de la solución. Por lo general, lo he incluido como un elemento de solución en la propia solución. En mis experimentos encontré que sin cerrar y volver a cargar la solución, cambiar la versión en global.jsonpuede conducir a extraños errores de compilación. Mi comentario se aplica a VS2018, versión 15.9.2, con .NET Core SDK 2.2.100.
Manfred
De los docs .NET Core SDK looks for a global.json file in the current working directory ... or one of its parent directories . Así que como un archivo de tipo de herencia.
StuartLC
10

Esto sucede a veces cuando intento abrir mis proyectos antiguos, lo que me ayuda es cambiar el marco de destino de los proyectos. Ir a Proyecto -> Nombre del Proyecto Propiedades ... y cambiar el marco de destino a la que se ha instalado. Propiedades del proyecto

H35am
fuente
El menú desplegable no me muestra nada. ¿Algunas ideas?
Danny
9

Esto funcionó para mi

Usa la instalación de Visual Studio

En la pestaña "Cargas de trabajo", marque "Desarrollo multiplataforma .Net Core" y haga clic en "Modificar".

ingrese la descripción de la imagen aquí

No olvide marcar "Herramientas de desarrollo .NET Core 2.0" en el menú de la izquierda.

Fuente

Nota

Instalé el Asp Net Core antes, sin embargo, no apareció en mi Visual Studio, justo después de que lo instalé usando la instalación de Visual Studio apareció para mí.

Wictor Chaves
fuente
1
Alternativamente, puede instalar lo que necesita desde aquí: dotnet.microsoft.com/download/…
user2173353
3

Cuando actualicé Visual Studio a la versión 15.5.1, .Net Core SDK se actualizó a 2.X, por lo que este error desapareció. Cuando corro dotnet --info, veo lo siguiente ahora:

ingrese la descripción de la imagen aquí

Johnny Oshika
fuente
3

Acabo de tener esto con 15.8.3 después de desinstalar algunos SDK de vista previa de .NET Core 1.x, mi aplicación no se compilaba y mostraba el error.

Se solucionó instalando la última versión x86 del SDK a pesar de que estoy en Windows 10 x64.

Supongo que esto se debe a que VS 2017 sigue siendo un programa x86 y, aunque los programas se ejecutan como x64, el compilador estaba buscando un SDK x86 apropiado

Paul Hatcher
fuente
3

Tenía instalaciones tanto de Visual Studio 2019 como de 2017. Intenté instalar .NET Core 2.X SDK para VS2017 por separado pero sin suerte.

El problema es que tengo .NET Core 3.0 SDK instalado como versión sdk predeterminada , que a VS2017 no le gusta.

Mi solución fue cambiar la versión del SDK para el proyecto específico.

  • Primero, enumere sus SDK instalados para encontrar la versión deseada :
$ dotnet --info

.NET Core SDK (reflecting any global.json):
 Version:   3.1.100
 Commit:    cd82f021f4

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

Host (useful for support):
  Version: 3.1.0
  Commit:  65f04fb6db

.NET Core SDKs installed:
  1.1.14 [C:\Program Files\dotnet\sdk]
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.509 [C:\Program Files\dotnet\sdk]
  2.2.110 [C:\Program Files\dotnet\sdk]
  3.0.100 [C:\Program Files\dotnet\sdk]
  3.1.100 [C:\Program Files\dotnet\sdk]
  • Desde su directorio de soluciones :
$ dotnet new globaljson --sdk-version 2.2.110 --force

Ahora, dotnetutilizará la versión de SDK especificada para esta solución.

No he encontrado una manera de hacer esto en todo el sistema sin estropear también mis proyectos 3.0.

J. Doeseph
fuente
Parece extraño que esto sea necesario, pero la creación de un global.json (para la versión 2.1.513) también resolvió mi problema.
8128
2

En realidad, a mí me pasó de manera opuesta a otras respuestas.

yo hice instalar la última .NET SDK básico antes de que apareciera el problema (3.0.0-preview2 en mi caso) que tiene no la versión más reciente de Visual Studio (no estoy seguro si eso fuera a hacer alguna diferencia).

Entonces, la solución fue solo desinstalar el último SDK de .NET Core . (Esto no es perfecto si lo necesita, por lo que podría considerar la actualización de Visual Studio a la última versión, pero al menos eso resolvió el problema en curso).

Agat
fuente
1

Acabo de pasar por este problema. En mi caso tenía un guión de trabajo

SET devenvPath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe
"%devenvPath%" mySolution.sln /Rebuild "DebugWithUT|AnyCpu" /Out mySolution.Build.log

Hoy comencé a recibir este error exacto. Pero ahora recuerdo haber instalado VS2019 el día anterior. Parece que cambió algo para VS2017. Fui a la actualización VS2017, instalé la última versión / actualización y la arreglé.

TS
fuente
0

Tuve el mismo problema y tengo la última versión de Microsoft Visual Studio Community 2017 Versión 15.7.3

Acabo de descargar el último SDK 2.1 y no más problemas de orientación. https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

Información: Microsoft Visual Studio Community 2017 Versión 15.7.3 VisualStudio.15.Release / 15.7.3 + 27703.2026 Microsoft .NET Framework Versión 4.7.03056

Versión instalada: Comunidad

Herramientas de C # 2.8.3-beta6-62923-07. Commit Hash: 7aafab561e449da50712e16c9e81742b8e7a2969 Componentes de C # utilizados en el IDE. Según el tipo de proyecto y la configuración, se puede utilizar una versión diferente del compilador.

Common Azure Tools 1.10 Proporciona servicios comunes para uso de Azure Mobile Services y Microsoft Azure Tools.

Administrador de paquetes NuGet 4.6.0 Administrador de paquetes NuGet en Visual Studio. Para obtener más información sobre NuGet, visite http://docs.nuget.org/ .

ProjectServicesPackage Extension 1.0 ProjectServicesPackage Información detallada de la extensión de Visual Studio

ResourcePackage Extension 1.0 ResourcePackage Visual Studio Extension Información detallada

Herramientas de Visual Basic 2.8.3-beta6-62923-07. Commit Hash: 7aafab561e449da50712e16c9e81742b8e7a2969 Componentes de Visual Basic utilizados en el IDE. Según el tipo de proyecto y la configuración, se puede utilizar una versión diferente del compilador.

Capa de interoperabilidad del paquete de host 1.0 del adaptador de depuración de código de Visual Studio para alojar adaptadores de depuración de código de Visual Studio en Visual Studio

Visual Studio Tools para Unity 3.7.0.1 Visual Studio Tools para Unity

islandTraderFX
fuente
0

asegúrese de descargar el SDK x86 en lugar de solo el SDK x64 para Visual Studio.

juFo
fuente
0

Tuve el mismo problema que el .NET SDK actual no admite la orientación a .NET Core 3.1. Apunte a .NET Core 1.1 o una versión anterior, o use una versión del .NET SDK que admita .NET Core 3.1

1) Asegúrese de que .Net core SDK esté instalado en su máquina. ¡Descarga .NET !

2) establezca las variables de entorno PATH como se muestra a continuación en la ruta

Arjun Dasari
fuente
0

Tuve este problema al intentar crear mi solución en TFS. Estábamos usando la tarea "dot net publish". El uso de msbuild nos rompió el hielo.

Papajaisiladki
fuente