web-dev-qa-db-fra.com

avertissement de restauration de dotnet NU1701

J'utilise .NETCore avec C # et quand je l'ai fait dotnet restore _ cela a donné l'erreur suivante:

PS C:\espace de travail\Arbitre> restauration par réseau

C:\espace de travail\Arbitrator\Arbitrator.csproj: avertissement NU1701: le package "PusherClient 0.5.0" a été restauré à l'aide de ".NETFramework, Version = v4.6.1" à la place du cadre cible du projet ".NETCoreApp, Version = v2.0". Cela peut causer des problèmes de compatibilité. C:\espace de travail\Arbitrator\Arbitrator.csproj: avertissement NU1701: le package "WebSocket4Net 0.14.1" a été restauré à l'aide de ".NETFramework, Version = v4.6.1" à la place du cadre cible du projet ".NETCoreApp, Version = v2.0". Cela peut causer des problèmes de compatibilité.

Ce paquet en problème est PusherClient , je viens de suivre les documents du nugget pour l'importer, comment puis-je résoudre cet avertissement?

48
fluter

Vous n'avez pas nécessairement besoin d'attendre que PusherClient soit mis à niveau pour .NET Core.

Référencer .NET Framework 4.6.1 (et inférieur) à partir de .NET Core est un nouvelle fonctionnalité disponible depuis .NET Core/Standard 2.0 preview 2/VS 2017 preview 15.3 et selon MS il peut être considéré comme une fonctionnalité qui vous aide à migrer le code .NET Framework vers .NET Standard ou .NET Core au fil du temps .

  1. Vous pouvez simplement supprimer cet avertissement

    • pour un package spécifique
    <PackageReference Include="Contoso.Base.API" Version="1.0.3">
        <NoWarn>NU1701</NoWarn>
    </PackageReference>
    
    • pour tous les forfaits
    <NoWarn>NU1701</NoWarn>
    

    Voir les scénarios 2 et 3 dans le wiki NuGet pour savoir comment le faire à partir de l'interface graphique .

    Il est toutefois possible que votre application échoue au moment de l'exécution lorsque vous appelez une API (similaire à WPF) non prise en charge par .NET Core. Les API natives éventuellement utilisées par PusherClient peuvent constituer une autre cause d'échec. Donc, vous devriez le tester en profondeur. Mais dans la plupart des cas, cela ne fonctionnera que sur toutes les plates-formes où .NET Core est pris en charge (par exemple, j'ai testé une application avec MathNet.Numerics et cela fonctionnait sous Linux même si MathNet.Numerics est également .NET Framework 4.6.1).

  2. Si vous n'avez pas besoin que votre application soit multi-plateforme, il suffit de changer son infrastructure cible en .NET 4.6.1 en ajoutant ce qui suit à votre fichier csproj:

    <TargetFramework>net461</TargetFramework>
    
55
Sourcerer

En remarque, ne faites pas ceci:

<PropertyGroup>
  <NoWarn>NU1701</NoWarn>
<PropertyGroup>

En faisant cela, tous les autres paramètres NoWarn seront supprimés, par exemple dans un fichier directory.build.prop. Au lieu de cela, faites ceci:

<PropertyGroup>
  <NoWarn>$(NoWarn);NU1701</NoWarn>
<PropertyGroup>

Ainsi, tous les paramètres globaux sont préservés.

9
Chris M.

Pour .NET Core 1.x:

Vous devez demander aux gars de PusherClient de préparer leur projet .NET-Core.

8
D.R.