Aviso nuget NU1512

RestoreForceEvaluate substitui RestoreLockedMode; o arquivo de bloqueio de pacotes será reavaliado e regenerado e o modo bloqueado será ignorado.

Issue

Ambos RestoreLockedMode e RestoreForceEvaluate estão habilitados para a restauração, mas essas opções são contraditórias:

  • RestoreLockedMode exige que o packages.lock.json arquivo permaneça inalterado e falha na restauração se as dependências de pacote resolvidas forem diferentes do arquivo de bloqueio.
  • RestoreForceEvaluate força o NuGet a reavaliar as dependências do pacote e regenerar o arquivo de bloqueio em cada restauração.

Quando ambos são definidos, RestoreForceEvaluate tem precedência: o arquivo de bloqueio é reavaliado e regenerado e o modo bloqueado solicitado é ignorado. Esse aviso é gerado para que o modo bloqueado ignorado não fique silencioso.

Solução

Habilite apenas uma dessas propriedades, com base em sua intenção:

  • Para garantir restaurações repetíveis (por exemplo, em cenários de CI/CD), mantenha RestoreLockedMode habilitado e interrompa a configuração RestoreForceEvaluate. Por exemplo, remova a opção --force-evaluate (ou -p:RestoreForceEvaluate=true) do comando de restauração:

    dotnet restore --locked-mode
    
  • Para reavaliar intencionalmente as versões flutuantes e regenerar o arquivo de bloqueio, mantenha RestoreForceEvaluate habilitado e interrompa a configuração RestoreLockedMode:

    dotnet restore --force-evaluate
    

Note

Esse aviso é gerado por padrão, começando com o SDK do .NET 11 (SdkAnalysisLevelvalor 11.0.100 ou superior). Você pode alterar a SdkAnalysisLevel propriedade para controlar esse comportamento.