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

RestoreForceEvaluate переопределяет RestoreLockedMode; Файл блокировки пакетов будет повторно оцениваться и повторно создаваться, а режим блокировки игнорируется.

Issue

Оба RestoreLockedMode и RestoreForceEvaluate включены для восстановления, но эти параметры являются противоречивыми:

  • RestoreLockedMode packages.lock.json требует, чтобы файл оставался неизменным и не удалось восстановить, если разрешенные зависимости пакета отличаются от файла блокировки.
  • RestoreForceEvaluate Принудив NuGet повторно оценить зависимости пакета и повторно создать файл блокировки для каждого восстановления.

Если оба набора заданы, RestoreForceEvaluate имеет приоритет: файл блокировки вычисляется повторно и повторно создается, а запрошенный заблокированный режим игнорируется. Это предупреждение вызывается таким образом, чтобы игнорируемый заблокированный режим не молчал.

Решение

Включите только одно из этих свойств в зависимости от намерения:

  • Чтобы гарантировать повторяемые восстановления (например, в сценариях CI/CD), сохраните RestoreLockedMode включенный и стоп-параметр RestoreForceEvaluate. Например, удалите --force-evaluate параметр (или -p:RestoreForceEvaluate=true) из команды восстановления:

    dotnet restore --locked-mode
    
  • Для намеренной повторной оценки с плавающей запятой версий и повторного создания файла блокировки сохраните RestoreForceEvaluate включенный и остановите настройку RestoreLockedMode:

    dotnet restore --force-evaluate
    

Note

Это предупреждение возникает по умолчанию, начиная с пакета SDK .NET 11 (SdkAnalysisLevelзначение 11.0.100 или более поздней версии). Свойство можно изменить SdkAnalysisLevel для управления этим поведением.