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


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

Некоторые целевые платформы, объявленные в группе зависимостей nuspec и папке lib/ref, имеют совместимые совпадения, но не точные совпадения в другом расположении. Если не преднамеренные, ознакомьтесь со списком действий ниже:

  • Добавьте группу зависимостей для . NETFramework4.7.2 в nuspec

Проблема

ref/<tfm>/ Каталог lib/<tfm>/ в пакете содержит по крайней мере один файл для Moniker Целевой платформы (TFM), указанный в сообщении предупреждения. Однако для этого TFM в nuspec файле не существует группы зависимостей. Это может привести к тому, что потребители пакетов считают, что пакет несовместим с TFM. Если сборки для указанного TFM имеют разные зависимости для совместимого TFM, определенного в группе зависимостей, проект с помощью пакета может столкнуться с ошибками среды выполнения.

Решение

  • Запуск целевого объекта пакета NuGet в проекте

По возможности используйте целевой объект пакета MSBuild NuGet, так как он автоматически сопоставляет сборки TFM с группами зависимостей из целевых платформ проекта. Обратите внимание, что проект должен использовать PackageReference для собственных зависимостей NuGet. Если в проекте используется packages.config, необходимо использовать nuget.exe pack и nuspec файл.

  • Редактирование nuspec файла вручную

Если вы используете пользовательский nuspec файл, рекомендуется использовать каждый TFM, для которого lib/ или ref/ сборки существуют, должны иметь соответствующую группу зависимостей, даже если зависимости совпадают со следующим совместимым TFM. Например, если пакет содержит netstandard1.0 и netstandard2.0 сборки, а зависимости одинаковы для обоих, рекомендуется указывать оба TFM в качестве групп зависимостей с повторяющимися элементами зависимостей.

Обратите внимание, что идентификатор TFM, используемый в путях сборки, использует другой формат идентификатора TFM, используемого в группах зависимостей. Предупреждение указывает правильное имя, используемое в группе зависимостей. Если пакет не имеет зависимостей для этой целевой платформы, используйте пустую группу. Например:

<package>
  <metadata>
    ...
    <dependencies>
      <group targetFramework=".NETFramework4.7.2" />
    </dependencies>
  </metadata>
  ...
<package>
  • lib/ Удаление или ref/ файлы

Если вы не хотите, чтобы ваш пакет был совместим с сообщаемой платформой TFM, измените проект таким образом, что нет lib/<tfm>/ или ref/<tfm>/ файлы находятся в пакете для этого TFM. Например, если предупреждение добавляет в пакет группу .NETFramework4.7.2 nuspecзависимостей, удалите все lib/net472/* ref/net472/* и файлы из пакета.