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


Ошибка NuGet NU1011

Централизованно определенные версии с плавающей запятой пакета не допускаются.

Проблема

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

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

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

Решение

Рекомендуется изменить плавающую версию на диапазон версий, отличный от плавающего с плавающей запятой. Если это невозможно, можно включить плавающие версии с помощью CPM, задав свойство MSBuild:

<PropertyGroup>
  <CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
</PropertyGroup>