Udostępnij za pomocą


Ostrzeżenie narzędzia NuGet NU5127

Ten pakiet nie zawiera folderu lib/ lub ref/ i dlatego będzie traktowany jako zgodny ze wszystkimi strukturami. Ponieważ pliki specyficzne dla platformy zostały znalezione w katalogu build/directory dla net45, netstandard2.0, rozważ utworzenie następujących pustych plików, aby poprawnie zawęzić zgodność pakietu:
-lib/net45/.
-lib/netstandard2.0/.

Problematyka

Projekty korzystające z pakietów z PackageReference użyciem tylko zestawów lib/ i ref/ w celu określenia zgodności pakietu. W związku z tym pakiet bez plików lib/ lub ref/ zostanie uznany za zgodny ze wszystkimi projektami. Jednak pakiety zawierające rekwizyty programu MSBuild lub obiekty docelowe specyficzne dla co najmniej jednej platformy docelowej pokazują intencję tylko w przypadku zgodności z tymi platformami docelowymi.

Rozważmy na przykład, że pakiet PackageA zawiera jeden plik. build/net8.0/PackageA.targets Jeśli ten pakiet jest przywołytyny przez element docelowy net48 projektu (.NET Framework, wersja 4.8), NuGet nie będzie emitować żadnych ostrzeżeń ani błędów, ale także nie wybierze żadnych zasobów z pakietu. W związku z tym odbiorca pakietu nie zostanie powiadomiony, że pakiet nie działa poprawnie w projekcie.

Rozwiązanie

Jak sugeruje komunikat ostrzegawczy, utwórz pusty plik o nazwie _._ w folderze lib dla wymienionych serwerów TFM. Umożliwi to programowi NuGet niepowodzenie przywracania projektów PackageReference , gdy projekt jest niezgodny z pakietem.

Jeśli pakiet ma być zgodny ze wszystkimi platformami docelowymi, ale zaczyna obowiązywać tylko dla niektórych platform docelowych, utwórz plik build/{PackageId}.props , którego zawartość to <Project />.