Estoy usando .NET Core con C#, y cuando hice la dotnet restore , me dio el siguiente error:
PD C:\espacio de trabajo\Árbitro> restauración dotnet
C:\workspace\Arbitrator\Arbitrator.csproj: advertencia NU1701: el paquete 'PusherClient 0.5.0' se restauró usando '.NETFramework,Version=v4.6.1' en lugar del marco de destino del proyecto '.NETCoreApp,Version=v2.0'. Esto puede causar problemas de compatibilidad. C:\workspace\Arbitrator\Arbitrator.csproj: advertencia NU1701: el paquete 'WebSocket4Net 0.14.1' se restauró usando '.NETFramework,Version=v4.6.1' en lugar del marco de destino del proyecto '.NETCoreApp,Version=v2.0'. Esto puede causar problemas de compatibilidad.
Este paquete en problema es PusherClient . Acabo de seguir los documentos de NuGet para importarlo. ¿Cómo puedo solucionar esta advertencia?
Como señaló Yair, hay una cuestión abierta sobre este tema en GitHub: github.com/NuGet/Home/issues/5740 .
Cuando la dependencia que se resuelve con una versión alternativa del marco es transitiva, la supresión de la advertencia para el paquete al que se hace referencia no funcionará.
Por ejemplo, Microsoft.TeamFoundationServer.ExtendedClient depende de Microsoft.AspNet.WebApi.Core, que no es compatible con .NET Core 3.0, lo que genera la advertencia. Agregar NoWarn a Microsoft.TeamFoundationServer.ExtendedClient no funcionará.
Como solución alternativa (puede ver mi publicación aquí: Solución alternativa en el problema de GitHub ), puede hacer referencia directamente a la dependencia transitiva y usar NoWarn contra ese paquete.
<ItemGroup> <PackageReference Include="Microsoft.AspNet.WebApi.Core" Version="5.2.3" NoWarn="NU1701" /> <PackageReference Include="Microsoft.TeamFoundationServer.ExtendedClient" Version="16.153.0"/> </ItemGroup>Para .NET Core 1.x:
Debe decirle a los muchachos de PusherClient que preparen su proyecto para .NET-Core.
No necesariamente tiene que esperar hasta que PusherClient se actualice para .NET Core.
Hacer referencia a .NET Framework 4.6.1 (y versiones anteriores) de .NET Core es una nueva función disponible desde .NET Core/Standard 2.0 preview 2 / VS 2017 preview 15.3 y, según MS, se puede considerar como una función que ayuda migra el código de .NET Framework a .NET Standard o .NET Core con el tiempo .
Puedes simplemente suprimir esta advertencia
<PackageReference Include="Contoso.Base.API" Version="1.0.3"> <NoWarn>NU1701</NoWarn> </PackageReference> <NoWarn>NU1701</NoWarn>Consulte los escenarios 2 y 3 en la wiki de NuGet para conocer las formas de hacerlo desde la GUI .
Sin embargo, es posible que su aplicación falle en tiempo de ejecución cuando llama a una API (como algo de WPF) que no es compatible con .NET Core. Otra razón de una falla podría ser las API nativas posiblemente utilizadas por PusherClient . Así que deberías probarlo extensamente. Pero en la mayoría de los casos, solo funcionará en todas las plataformas donde se admita .NET Core (por ejemplo, probé una aplicación con dependencia de MathNet.Numerics y funcionó en Linux a pesar de que MathNet.Numerics también es .NET Framework 4.6.1 ).
Si no necesita que su aplicación sea multiplataforma, simplemente cambie su marco de destino a .NET 4.6.1 agregando lo siguiente a su archivo csproj:
<TargetFramework>net461</TargetFramework>Como nota al margen, no hagas esto:
<PropertyGroup> <NoWarn>NU1701</NoWarn> </PropertyGroup>Hacer eso romperá cualquier otra configuración de NoWarn que se recoja en otro lugar, como desde un archivo directory.build.prop. En su lugar, haz esto:
<PropertyGroup> <NoWarn>$(NoWarn);NU1701</NoWarn> </PropertyGroup>De esa manera, se conservan las configuraciones globales.