Freigeben über


NuGet-Warnung NU5127

Dieses Paket enthält keine lib/oder ref/folder und wird daher für alle Frameworks als kompatibel behandelt. Da frameworkspezifische Dateien unter dem Build/Verzeichnis für net45 gefunden wurden, sollten Sie die folgenden leeren Dateien erstellen, um die Kompatibilität des Pakets korrekt einzuschränken:
-lib/net45/.
-lib/netstandard2.0/.

Thema

Projekte, die Pakete nur mit PackageReference Verwendung und ref/ Assemblys verwendenlib/, um die Paketkompatibilität zu ermitteln. Daher wird ein Paket ohne Irgendwelche lib/ oder ref/ Dateien als kompatibel mit allen Projekten betrachtet. Pakete, die MSBuild-Props oder -Ziele enthalten, die für ein oder mehrere Zielframeworks spezifisch sind, zeigen jedoch die Absicht, nur mit diesen Zielframeworks kompatibel zu sein.

Angenommen, ein Paket PackageA enthält eine einzelne Datei, build/net8.0/PackageA.targets. Wenn dieses Paket von einem Projektziel net48 (.NET Framework, Version 4.8) referenziert wird, gibt NuGet keine Warnungen oder Fehler aus, sondern wählt auch keine Ressourcen aus dem Paket aus. Daher wird der Paketanwender nicht benachrichtigt, dass das Paket nicht ordnungsgemäß mit ihrem Projekt funktioniert.

Lösung

Erstellen Sie, wie die Warnmeldung vorschlägt, eine leere Datei _._ im Ordner "lib" für die aufgeführten TFMs. Dadurch kann NuGet die Wiederherstellung für PackageReference Projekte fehlschlagen, wenn das Projekt nicht mit dem Paket kompatibel ist.

Wenn Ihr Paket mit allen Zielframeworks kompatibel sein soll, aber nur für bestimmte Zielframeworks wirksam wird, erstellen Sie eine Datei build/{PackageId}.props , deren Inhalt lautet <Project />.