Partager via


Avertissement NuGet NU5127

Ce package ne contient pas de dossier lib/ou ref/, et sera donc traité comme compatible pour toutes les infrastructures. Étant donné que des fichiers spécifiques à l’infrastructure ont été trouvés sous le répertoire build/directory pour net45, netstandard2.0, envisagez de créer les fichiers vides suivants pour affiner correctement la compatibilité du package :
-lib/net45/.
-lib/netstandard2.0/.

Problème

Projets utilisant des packages avec PackageReference uniquement des assemblys et ref/ des utilisations lib/ pour déterminer la compatibilité des packages. Par conséquent, un package sans lib/ref/ aucun ou fichier sera considéré comme compatible avec tous les projets. Toutefois, les packages contenant des propriétés ou des cibles MSBuild spécifiques à un ou plusieurs frameworks cibles affichent l’intention en étant uniquement compatibles avec ces frameworks cibles.

Par exemple, considérez qu’un package PackageA contient un seul fichier. build/net8.0/PackageA.targets Si ce package est référencé par un ciblage de net48 projet (.NET Framework, version 4.8), NuGet n’émet pas d’avertissements ou d’erreurs, mais ne sélectionne pas non plus les ressources du package. Par conséquent, le consommateur du package ne sera pas averti que le package ne fonctionne pas correctement avec son projet.

Solution

Comme le suggère le message d’avertissement, créez un fichier vide nommé _._ dans le dossier lib pour les tfms répertoriés. Cela permet à NuGet d’échouer la restauration pour PackageReference les projets lorsque le projet n’est pas compatible avec le package.

Si votre package est destiné à être compatible avec toutes les infrastructures cibles, mais que prend effet uniquement pour certaines infrastructures cibles, créez un fichier build/{PackageId}.props dont le contenu est <Project />.