Поделиться через


Предупреждение NuGet NU5127

Этот пакет не содержит библиотеку или папку ref/, поэтому она будет рассматриваться как совместимая для всех платформ. Так как конкретные файлы платформы были найдены в каталоге сборки и каталога для net45, netstandard2.0 рекомендуется создать следующие пустые файлы, чтобы правильно сузить совместимость пакета:
-lib/net45/.
-lib/netstandard2.0/.

Проблема

Проекты, использующие пакеты только с PackageReference использованием lib/ и ref/ сборками для определения совместимости пакетов. Поэтому пакет без каких-либо lib/ref/ файлов будет считаться совместимым со всеми проектами. Однако пакеты, содержащие props или целевые объекты MSBuild, относящиеся к одной или нескольким целевым платформам, показывают, что намерение совместимо только с этими целевыми платформами.

Например, рассмотрим пакетPackageA, содержащий один файл. build/net8.0/PackageA.targets Если на этот пакет ссылается целевой net48 проект (.NET Framework, версия 4.8), NuGet не выдает никаких предупреждений или ошибок, но также не будет выбирать ресурсы из пакета. Поэтому потребитель пакета не будет получать уведомления о том, что пакет работает неправильно с проектом.

Решение

Как предполагает предупреждение, создайте пустой файл с именем _._ в папке lib для перечисленных TFM. Это позволит NuGet завершить восстановление для PackageReference проектов, если проект несовместим с пакетом.

Если пакет должен быть совместим со всеми целевыми платформами, но действует только для определенных целевых платформ, создайте файл build/{PackageId}.props , содержимое которого является <Project />.