NuGet-fel NU1011

Följande PackageVersion-objekt kan inte ange en flytande version: PackageName.

Problematik

Ett projekt har konfigurerats för att använda NuGet Central Package Management och ett <PackageVersion /> objekt definieras som anger ett flytande versionsvärde för Version attributet:

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

Objekt kan som standard <PackageVersion /> inte ange flytande versioner. NuGets centrala pakethantering ger användarna möjlighet att hantera paketversioner på en enda plats samt deterministiska och säkra återställningar. Användningen av flytande versioner medför möjligheten att ett felaktigt paket introduceras i din version efter att det har push-överförts till ett flöde. Detta kan leda till en situation där du inte har gjort några ändringar i lagringsplatsen, men plötsligt bryts något på grund av ett problem i ett nytt paket och det finns inget sätt för dig att komma tillbaka till ett bra tillstånd utan att ta bort den flytande versionen eller push-överföra en nyare version av paketet som är fast. Att använda icke-flytande versioner innebär att varje uppgradering till ett paket backas upp av en incheckning på lagringsplatsen, vilket gör det enkelt att avgöra vilken ändring som orsakade pausen och gör att du kan återställa en incheckning för att återgå till ett bra tillstånd.

När du använder funktionen för transitiv fästning i Central Package Management kan en flytande version som en åsidosättning göra att återställningar av olika projekt får olika versioner för paketet som det som ska fästas, vilket går emot löftet att använda den centralt definierade versionen.

NuGet rekommenderar att du använder automatisering som Dependabot för att behålla paketversioner up-to-date, vilket ger ett effektivt sätt att uppdatera paketversioner samtidigt som du integrerar i ditt befintliga utvecklararbetsflöde för en pull-begäran, automatiserad byggvalidering och testning som stöds av en incheckning i lagringsplatsen.

Lösning

<ItemGroup>
  <PackageVersion Include="PackageName" Version="1.0.0" />
</ItemGroup>
  • Om det inte är möjligt, eller om du vill använda flytande versioner med Central Package Management, kan du göra det genom att ange en MSBuild-egenskap:
<PropertyGroup>
  <CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
</PropertyGroup>