web-dev-qa-db-fra.com

Les packages Nuget Netstandard1.x ne peuvent pas être installés pour les projets netstandard1.x

Après une nouvelle installation de Windows 10 avec les derniers outils Visual Studio 2015, netcore et nuget, je ne peux plus installer de packages Nuget sur des projets .netstandard. Voici quelques exemples de résultats:

Restoring packages for 'ClassLibrary1'.
Restoring packages for c:\users\zone1\documents\visual studio 2015\Projects\ClassLibrary1\ClassLibrary1\project.json...
Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
  - monoandroid10 (MonoAndroid,Version=v1.0)
  - monotouch10 (MonoTouch,Version=v1.0)
  - net45 (.NETFramework,Version=v4.5)
  - netcore50 (.NETCore,Version=v5.0)
  - netstandard1.0 (.NETStandard,Version=v1.0)
  - netstandard1.3 (.NETStandard,Version=v1.3)
  - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
  - win8 (Windows,Version=v8.0)
  - wp8 (WindowsPhone,Version=v8.0)
  - wpa81 (WindowsPhoneApp,Version=v8.1)
  - xamarinios10 (Xamarin.iOS,Version=v1.0)
  - xamarinmac20 (Xamarin.Mac,Version=v2.0)
  - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
  - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)
One or more packages are incompatible with .NETStandard,Version=v1.3.
Package restore failed for 'ClassLibrary1'.

J'ai créé le projet ClassLibrary1 en tant que bibliothèque de classes portable, modifiez la cible en netstandard1.3 et ne peux installer aucun paquet Nuget prenant en charge netstandard1.3. Il en va de même pour netstandard1.5 et les autres versions.

J'essaie juste d'extraire et de générer le code source de MailKit (un projet prenant en charge .netstandard) pour vérifier que mon projet n'a pas été mal configuré et que je rencontre le même problème:

Errors in C:\Users\zone1\Repos\MailKit\MailKit\MailKit.CoreFX.xproj
    Package System.Net.NetworkInformation 4.1.0 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.Net.NetworkInformation 4.1.0 supports:
      - monoandroid10 (MonoAndroid,Version=v1.0)
      - monotouch10 (MonoTouch,Version=v1.0)
      - net45 (.NETFramework,Version=v4.5)
      - netcore50 (.NETCore,Version=v5.0)
      - netstandard1.0 (.NETStandard,Version=v1.0)
      - netstandard1.3 (.NETStandard,Version=v1.3)
      - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
      - win8 (Windows,Version=v8.0)
      - wp8 (WindowsPhone,Version=v8.0)
      - wpa81 (WindowsPhoneApp,Version=v8.1)
      - xamarinios10 (Xamarin.iOS,Version=v1.0)
      - xamarinmac20 (Xamarin.Mac,Version=v2.0)
      - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
      - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)
    One or more packages are incompatible with .NETStandard,Version=v1.3.

J'ai posté quelques détails supplémentaires ici: https://github.com/NuGet/Home/issues/3433

Tout cela a fonctionné avant de reformater avec une nouvelle installation de Windows. Est-ce que je manque quelque chose? 

16
zone117x

Vous avez une solution qui fonctionne grâce à un conseil de @ eddie-msft .

Téléchargez la dernière version de ligne de commande nuget ici https://dist.nuget.org/index.html ( v3.5.0-rc1 au moment de la publication)

Puis lancez:

nuget.exe locals -clear all

J'ai veillé à ce que VS ferme et supprime tous les fichiers project.lock.json existants. Maintenant, tout semble fonctionner comme prévu. 

J'ai trouvé que ce problème se produisait sur n'importe quel système avec une nouvelle installation de Windows/VS/tooling, donc probablement un bogue avec leurs installateurs. 

19
zone117x

Pour VS 2017 - Mise à jour 15.3 

Vous pouvez contourner cela en procédant comme suit

Editez le fichier .csproj pour la bibliothèque .NET Standard et ajoutez ces lignes

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
 <TargetFramework>netstandard1.4</TargetFramework>
 <PackageTargetFallback Condition=" '$(TargetFramework)' == 'netstandard1.4' ">$(PackageTargetFallback);dotnet5.6;portable-net45+win8</PackageTargetFallback>
 </PropertyGroup>



Other stuff here
 </Project>

PackageTargetFallback vous permettra d'utiliser des packages compatibles plus anciens.

https://www.cameronmoten.com/2017/08/19/fixing-xamarin-with-net-standard-in-visual-studio-2017-v-15-3/

2
Cam Moten

Il semble que quelque chose manque dans votre outillage et la messagerie d'erreur n'est pas toujours la plus claire à ce sujet. Pouvez-vous vous assurer que vous avez exécuté les deux installateurs ici:

Mise à jour 3 de Visual Studio 2015 (je suppose que vous avez ceci)

.NET Core 1.0.1 - VS 2015 Tooling Preview 2

Je ne pense vraiment pas que ce soit un problème de fichier projet, car MailKit échoue pour vous et je doute que vous ayez cassé NuGet. L’autre partie qui pourrait vous donner de bonnes informations si cela ne fonctionne pas est de courir

Dotnet restore

dans le répertoire du projet pour voir comment donet le gère sans Visual Studio.

1
Feasoron