Avviso NuGet NU1512

RestoreForceEvaluate esegue l'override di RestoreLockedMode; il file di blocco dei pacchetti verrà rivalutato e rigenerato e la modalità bloccata viene ignorata.

Problema

Sia RestoreLockedMode che RestoreForceEvaluate sono abilitati per il ripristino, ma queste opzioni sono contraddittorie:

  • RestoreLockedMode richiede che il packages.lock.json file rimanga invariato e non riesca il ripristino se le dipendenze del pacchetto risolte differiscono dal file di blocco.
  • RestoreForceEvaluate forza NuGet a rivalutare le dipendenze del pacchetto e rigenerare il file di blocco in ogni ripristino.

Quando entrambi sono impostati, RestoreForceEvaluate ha la precedenza: il file di blocco viene rivalutato e rigenerato e la modalità bloccata richiesta viene ignorata. Questo avviso viene generato in modo che la modalità bloccata ignorata non sia invisibile all'utente.

Soluzione

Abilitare solo una di queste proprietà, in base alla finalità:

  • Per garantire ripristini ripetibili (ad esempio, negli scenari CI/CD), mantenere RestoreLockedMode abilitata e arrestare l'impostazione RestoreForceEvaluate. Ad esempio, rimuovere l'opzione --force-evaluate (o -p:RestoreForceEvaluate=true) dal comando di ripristino:

    dotnet restore --locked-mode
    
  • Per rivalutare intenzionalmente le versioni mobili e rigenerare il file di blocco, mantenere RestoreForceEvaluate abilitata e arrestare l'impostazione RestoreLockedMode:

    dotnet restore --force-evaluate
    

Note

Questo avviso viene generato per impostazione predefinita a partire dal .NET 11 SDK (SdkAnalysisLevel valore 11.0.100 o superiore). È possibile modificare la SdkAnalysisLevel proprietà per controllare questo comportamento.