NuGet 警告 NU1512

RestoreForceEvaluate は RestoreLockedMode をオーバーライドします。パッケージ ロック ファイルは再評価および再生成され、ロック モードは無視されます。

Issue

復元には RestoreLockedModeRestoreForceEvaluate の両方が有効ですが、これらのオプションは矛盾しています。

  • 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

この警告は、.NET 11 SDK (SdkAnalysisLevel11.0.100 以上) 以降で既定で発生します。 SdkAnalysisLevel プロパティを変更して、この動作を制御できます。