Aviso NuGet NU1512

O RestoreForceEvaluate sobrepõe o RestoreLockedMode; O ficheiro de bloqueio dos pacotes será reavaliado e regenerado, e o modo bloqueado é ignorado.

Issue

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

  • RestoreLockedMode requer que o packages.lock.json ficheiro permaneça inalterado e falha a restauração se as dependências resolvidas dos pacotes diferirem do ficheiro de bloqueio.
  • RestoreForceEvaluate obriga o NuGet a reavaliar as dependências dos pacotes e a regenerar o ficheiro de bloqueio em cada restauro.

Quando ambos são definidos, RestoreForceEvaluate tem prioridade: o ficheiro de bloqueio é reavaliado e regenerado, e o modo bloqueado solicitado é ignorado. Este aviso é levantado para que o modo bloqueado ignorado não fique silencioso.

Solução

Ative apenas uma destas propriedades, com base na sua intenção:

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

    dotnet restore --locked-mode
    
  • Para reavaliar intencionalmente versões flutuantes e regenerar o ficheiro de bloqueio, mantenha RestoreForceEvaluate ativado e pare de definir RestoreLockedMode:

    dotnet restore --force-evaluate
    

Note

Este aviso é gerado por defeito a partir do SDK .NET 11 (SdkAnalysisLevelvalor 11.0.100 ou superior). Pode alterar a SdkAnalysisLevel propriedade para controlar este comportamento.