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


Ошибка NuGet NU1011

Следующие элементы PackageVersion не могут указать плавающую версию: PackageName.

Проблема

Проект настроен для использования управления пакетами NuGet Central и <PackageVersion /> определяется элемент, указывающий значение с плавающей версией для атрибута Version :

<ItemGroup>
  <PackageVersion Include="PackageName" Version="1.*" />
</ItemGroup>

По умолчанию <PackageVersion /> элементы не могут указывать плавающие версии. Централизованное управление пакетами NuGet предоставляет пользователям возможность управлять версиями пакетов в одном расположении, а также детерминированными и безопасными восстановлениями. Использование с плавающей запятой версий представляет возможность внедрения плохого пакета в сборку после отправки в веб-канал. Это может привести к ситуации, когда вы не внесли никаких изменений в репозиторий, но вдруг что-то сломалось из-за проблемы в новом пакете, и вам не удастся вернуться в хорошее состояние, не удаляя плавающую версию или принудив новую версию пакета, которая исправлена. Использование не с плавающей запятой версий означает, что каждое обновление пакета поддерживается фиксацией в репозитории, что упрощает определение того, какое изменение вызвало разрыв и позволяет восстановить фиксацию, чтобы вернуться в хорошее состояние.

Кроме того, при использовании функции транзитивного закрепленияцентрального управления пакетами, использование плавающей версии в качестве переопределения может привести к восстановлению различных проектов в конечном итоге с различными версиями пакета, что должно быть закреплено, таким образом, с обещанием использования централизованно определенной версии.

NuGet рекомендует использовать автоматизацию, например Dependabot , чтобы сохранить версии пакетов up-to-date, которая обеспечивает упрощенный способ обновления версий пакетов при интеграции в существующий рабочий процесс разработчика запроса на вытягивание, автоматическую проверку сборки и тестирование всех, поддерживаемых фиксацией в репозитории.

Решение

<ItemGroup>
  <PackageVersion Include="PackageName" Version="1.0.0" />
</ItemGroup>
  • Если это невозможно, или вы хотите использовать плавающие версии с центральным управлением пакетами, это можно сделать, задав свойство MSBuild:
<PropertyGroup>
  <CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
</PropertyGroup>