Compartilhar via


Erro do NuGet NU1011

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

Problema

Um projeto é configurado para usar o Gerenciamento de Pacotes Do NuGet Central 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 fornece aos usuários a capacidade de gerenciar versões de pacote em um único local, bem como restaurações determinísticas e seguras. O uso de versões flutuantes introduz a possibilidade de um pacote incorreto ser introduzido em sua compilação depois de ter sido empurrado para um feed. Isso pode levar a uma situação em que você não fez nenhuma alteração em seu repositório, mas, de repente, algo está interrompido 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 enviar por push uma versão mais recente do pacote que é corrigida. O uso de 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 de qual alteração causou a interrupção e permite 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 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 do pacote up-to-date, que fornece uma maneira simplificada de atualizar as versões do pacote ao integrar ao fluxo de trabalho do desenvolvedor existente de uma solicitação pull, validação automatizada de build e testar tudo com o suporte de 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 quiser usar versões flutuantes com o Gerenciamento Central de Pacotes, você poderá fazer isso definindo uma propriedade MSBuild:
<PropertyGroup>
  <CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
</PropertyGroup>