Comment référencer une bibliothèque .NET Standard à partir d’une application console .NET Framework 4.5 dans Visual Studio 2017?

J’ai finalement installé Visual Studio 2017.2 et j’essaie de faire fonctionner mon premier projet, mais je rencontre des problèmes que j’espère aborder ici.

J’ai une très simple bibliothèque .NET Standard décrite comme le fichier de projet suivant:

  netstandard1.6   

Et une application console très simple .NET Framework qui fait référence à la bibliothèque .NET Standard ci-dessus et qui est décrite comme le fichier de projet suivant:

   Exe net45      

Lorsque je construis mon application console, j’obtiens l’erreur de construction suivante:

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)

J’ai vu cette question et essayé certaines des suggestions fournies ici, mais aucune d’entre elles n’a fonctionné. Donc, cela semble être un problème différent. Veuillez noter que cela se produit pendant la construction de ma solution et ne fait aucunement référence aux packages NuGet (explicites).

Enfin, si cela aide, j’ai une solution qui illustre ce problème ici: https://github.com/Mike-EEE/Stash/blob/master/VS2017.Multi/VS2017.dotNetFramework.sln

.NET Framework 4.5 prend uniquement en charge l’utilisation de bibliothèques standard .net ciblant .NET Standard 1.0 ou 1.1. Depuis que votre bibliothèque cible 1.6, l’outillage fait la bonne chose ici et génère des erreurs (car votre bibliothèque peut utiliser des API non disponibles dans .NET Framework 4.5). Si vous avez publié la bibliothèque en tant que package NuGet et que vous l’avez utilisée via une référence de package, la restauration du package générerait également une erreur (avec une erreur indiquant que le package est incompatible).

Il existe une certaine confusion quant à la version .NET Standard prise en charge par une version .NET Framework, notamment du fait qu’il existe un outil de prévisualisation (“2.0”) permettant de modifier ces versions. Le tableau “Prise en charge des plates-formes .NET” dans la documentation contient donc deux lignes concernant les versions sockets en charge. Toutefois, dans votre cas, les deux versions limitent .NET Framework 4.5 à .NET Standard 1.1.

pour que les projets de framework .net soient compatibles avec les bibliothèques standard .net, vous devez acquérir le NETStandard.Library du nuget.
Maintenant, je ne trouve aucune ressource officielle indiquant exactement pourquoi il s’agit là d’un NETStandard.Library , mais de ce que NETStandard.Library bien, le NETStandard.Library contient les liens nécessaires pour créer une carte à partir du .NET Standard API vers .NET Framework.
Si vous souhaitez plus d’informations, je vous suggère de lire la documentation officielle de NET Standard .