Udostępnij za pomocą


Błąd narzędzia NuGet NU1011

Następujące elementy PackageVersion nie mogą określać wersji przestawnej: PackageName.

Problem

Projekt jest skonfigurowany do używania centralnego zarządzania pakietami NuGet, a <PackageVersion /> element jest zdefiniowany, który określa zmienną wartość wersji atrybutu Version :

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

Domyślnie <PackageVersion /> elementy nie mogą określać wersji zmiennoprzecinkowych. Centralne zarządzanie pakietami NuGet umożliwia użytkownikom zarządzanie wersjami pakietów w jednej lokalizacji, a także deterministyczne i bezpieczne przywracanie. Użycie wersji zmiennoprzecinkowych wprowadza możliwość wprowadzenia złego pakietu do kompilacji po wypchnięciu do kanału informacyjnego. Może to prowadzić do sytuacji, w której nie wprowadzono żadnych zmian w repozytorium, ale nagle coś jest uszkodzone z powodu problemu w nowym pakiecie i nie ma możliwości powrotu do dobrego stanu bez usuwania przestawnej wersji lub wypychania nowszej wersji pakietu, która została naprawiona. Korzystanie z nieprzecinkowych wersji oznacza, że każde uaktualnienie do pakietu jest wspierane przez zatwierdzenie w repozytorium, co ułatwia określenie, jaka zmiana spowodowała przerwanie i umożliwia przywrócenie zatwierdzenia w celu powrotu do dobrego stanu.

Ponadto w przypadku korzystania z przechodniej funkcji przypinania centralnego zarządzania pakietami użycie wersji przestawnej jako zastąpienia może spowodować przywrócenie różnych projektów kończy się różnymi wersjami pakietu, które mają zostać przypięte, w związku z czym będzie sprzeczne z obietnicą użycia centralnie zdefiniowanej wersji.

NuGet zaleca użycie automatyzacji, takiej jak Dependabot , aby zachować wersje pakietów up-to-date, która zapewnia usprawniony sposób aktualizowania wersji pakietów podczas integracji z istniejącym przepływem pracy dewelopera żądania ściągnięcia, zautomatyzowanej weryfikacji kompilacji i testowania wszystkich wspieranych przez zatwierdzenie w repozytorium.

Rozwiązanie

<ItemGroup>
  <PackageVersion Include="PackageName" Version="1.0.0" />
</ItemGroup>
  • Jeśli nie jest to możliwe lub chcesz używać wersji zmiennoprzecinkowych z centralną funkcją zarządzania pakietami, możesz to zrobić, ustawiając właściwość MSBuild:
<PropertyGroup>
  <CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
</PropertyGroup>