Ошибка NuGet NU1018

Сценарий

Проект MyProject пытается восстановить повторяющиеся платформы, которые поддерживаются только в распознавателье зависимостей по умолчанию, когда пакет SDK для .NET версии 10.0.300 или более поздней версии. Обновите пакет SDK .NET или удалите RestoreUseLegacyDependencyResolver, чтобы использовать эту функцию.

Проблема

Файл проекта содержит несколько TargetFrameworks записей, разрешающихся в одной платформе NuGet. Этот сценарий называется псевдонимом платформы, где разные свойства TargetFramework сопоставляют с той же базовой платформой.

Например, файл проекта, как показано ниже, определяет две целевые платформы, которые разрешаются в одной net9.0 платформе NuGet:

<PropertyGroup>
  <TargetFrameworks>net9.0-custom1;net9.0-custom2</TargetFrameworks>
</PropertyGroup>

Псевдоним платформы поддерживается только в сопоставитель зависимостей по умолчанию, для которого требуется .NET пакет SDK 10.0.300 или более поздней версии (SdkAnalysisLevel10.0.300 или более поздней версии). Если устаревший сопоставитель зависимостей активен (либо из-за того, что версия пакета SDK более ранняя или RestoreUseLegacyDependencyResolver задана), формат файла ресурсов не поддерживает повторяющиеся платформы, и NuGet вызывает эту ошибку.

Решение

Используйте один из следующих подходов для устранения этой ошибки:

  • Upgrade для .NET пакета SDK 10.0.300 или более поздней версии, который использует сопоставитель зависимостей по умолчанию, поддерживающий псевдоним платформы.
  • RestoreUseLegacyDependencyResolver Удалите свойство из файла проекта или Directory.Build.props, если оно задано. Это позволяет NuGet использовать сопоставитель зависимостей по умолчанию.
  • Удалите повторяющиеся записи платформы из свойства TargetFrameworks , чтобы каждая целевая платформа разрешала уникальную платформу NuGet.