visual studio net framework change cambiar c# .net nuget visual-studio-2017 .net-standard

c# - studio - sdk.net framework 4.7 2



¿Cómo hace referencia a una biblioteca estándar de.NET desde una aplicación de consola de.NET Framework 4.5 en Visual Studio 2017? (2)

.NET Framework 4.5 solo admite el uso de bibliotecas estándar .net dirigidas a .NET Standard 1.0 o 1.1. Dado que su biblioteca tiene como objetivo 1.6, las herramientas hacen lo correcto aquí y producen errores (ya que su biblioteca puede utilizar API no disponibles en .NET Framework 4.5). Si publicaba la biblioteca como paquete NuGet y la consumía a través de una referencia de paquete, la restauración del paquete también se produciría un error (con un error que indicaba que el paquete es incompatible).

Existe cierta confusión acerca de qué versión .NET Standard es compatible con una versión de .NET Framework, ya que hay herramientas de vista previa disponibles ("2.0") que cambian estas versiones. La tabla "Soporte de plataformas .NET" en la documentación, por lo tanto, contiene dos líneas sobre las versiones compatibles. Sin embargo, en su caso, ambas versiones limitan .NET Framework 4.5 a .NET Standard 1.1.

Finalmente, instalé Visual Studio 2017.2 y estoy tratando de hacer que mi primer proyecto funcione, pero tengo algunos problemas que espero resolver aquí.

Tengo una biblioteca estándar de .NET muy simple que se describe como el siguiente archivo de proyecto:

<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard1.6</TargetFramework> </PropertyGroup> </Project>

Y una aplicación de consola de .NET Framework muy simple que hace referencia a la biblioteca estándar de .NET anterior y se describe como el siguiente archivo de proyecto:

<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net45</TargetFramework> </PropertyGroup> <ItemGroup> <ProjectReference Include="../Common/Common.csproj" /> </ItemGroup> </Project>

Cuando compilo mi aplicación de consola, obtengo el siguiente error de compilación:

C:/Program Files/dotnet/sdk/1.0.4/NuGet.targets(97,5): error : Project Common is not compatible with net45 (.NETFramework,Version=v4.5). Project Common supports: netstandard1.6 (.NETStandard,Version=v1.6)

Vi esta pregunta y probé algunas de las sugerencias proporcionadas allí, pero ninguna de ellas funcionó. Por lo tanto, esto parece ser un problema diferente. Tenga en cuenta que esto ocurre durante la compilación de mi solución y no hace referencia (explícita) a los paquetes de NuGet de ninguna manera.

Finalmente, si ayuda, tengo una solución que demuestra este problema aquí: https://github.com/Mike-EEE/Stash/blob/master/VS2017.Multi/VS2017.dotNetFramework.sln


para que los proyectos de .net framework sean compatibles con las bibliotecas estándar .net, debe adquirir NETStandard.Library del nuget.
Ahora no puedo encontrar ningún recurso oficial que indique exactamente por qué esto es obligatorio, pero por lo que entiendo, NETStandard.Library tiene los enlaces necesarios para hacer un mapa desde las API estándar de .NET a .NET Framework.
Si desea más información, sugiero leer los documentos oficiales de NET Standard .