Partilhar via


Erro NuGet NU1011

Os seguintes itens PackageVersion não podem especificar uma versão flutuante: PackageName.

Questão

Um projeto é configurado para usar o NuGet Central Package Management e um <PackageVersion /> item é definido que especifica um valor de versão flutuante para o Version atributo:

<ItemGroup>
  <PackageVersion Include="PackageName" Version="1.*" />
</ItemGroup>

Por padrão, <PackageVersion /> os itens não podem especificar versões flutuantes. O Gerenciamento Central de Pacotes do NuGet oferece aos usuários a capacidade de gerenciar versões de pacotes em um único local, bem como restaurações determinísticas e seguras. O uso de versões flutuantes introduz a possibilidade de um pacote ruim ser introduzido em sua compilação depois de ter sido enviado para um feed. Isso pode levar a uma situação em que você não fez alterações em seu repositório, mas de repente algo é quebrado devido a um problema em um novo pacote e não há como você voltar a um bom estado sem remover a versão flutuante ou empurrar uma versão mais recente do pacote que é corrigido. Usar versões não flutuantes significa que cada atualização para um pacote é apoiada por uma confirmação em seu repositório, facilitando a determinação da alteração que causou a interrupção e permitindo que você reverta uma confirmação para voltar a um bom estado.

Além disso, ao usar o recurso de fixação transitiva do Gerenciamento Central de Pacotes, usar uma versão flutuante como uma substituição pode fazer com que restaurações de diferentes projetos acabem com versões diferentes para o pacote que o que deveria ser fixado, indo contra a promessa de usar a versão definida centralmente.

O NuGet recomenda que você use automação como o Dependabot para manter as versões de pacotes up-toatualizadas, o que fornece uma maneira simplificada de atualizar versões de pacotes enquanto integra ao fluxo de trabalho de desenvolvedor existente uma solicitação pull, validação de compilação automatizada e testes, tudo apoiado por uma confirmação em seu repositório.

Solução

<ItemGroup>
  <PackageVersion Include="PackageName" Version="1.0.0" />
</ItemGroup>
  • Se isso não for possível, ou se você desejar usar versões flutuantes com o Gerenciamento Central de Pacotes, poderá fazê-lo definindo uma propriedade MSBuild:
<PropertyGroup>
  <CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
</PropertyGroup>