Freigeben über


NuGet-Fehler NU1011

Die folgenden PackageVersion-Elemente können keine unverankerte Version angeben: PackageName.

Problem

Ein Projekt ist so konfiguriert, dass nuGet Central Package Management verwendet wird und ein <PackageVersion /> Element definiert wird, das einen unverankerten Versionswert für das Version Attribut angibt:

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

Standardmäßig <PackageVersion /> können Elemente keine unverankerten Versionen angeben. Die zentrale Paketverwaltung von NuGet bietet Benutzern die Möglichkeit, Paketversionen an einem einzigen Speicherort sowie deterministische und sichere Wiederherstellungen zu verwalten. Die Verwendung unverankerter Versionen führt dazu, dass ein schlechtes Paket in Ihren Build eingeführt werden kann, nachdem es an einen Feed verschoben wurde. Dies kann zu einer Situation führen, in der Sie keine Änderungen am Repository vorgenommen haben, aber plötzlich etwas aufgrund eines Problems in einem neuen Paket unterbrochen wird, und es gibt keine Möglichkeit, wieder in einen guten Zustand zu gelangen, ohne die unverankerte Version zu entfernen oder eine neuere Version des Pakets zu verschieben, das behoben ist. Die Verwendung nicht unverankerter Versionen bedeutet, dass jedes Upgrade auf ein Paket durch einen Commit in Ihrem Repository gesichert wird, wodurch leicht zu bestimmen ist, welche Änderung die Unterbrechung verursacht hat, und es Ihnen ermöglicht, einen Commit zurück zu setzen, um wieder in einen guten Zustand zu gelangen.

Wenn Sie auch das transitive Pinning-Feature der zentralen Paketverwaltung verwenden, könnte die Verwendung einer unverankerten Version als Außerkraftsetzung dazu führen, dass Wiederherstellungen verschiedener Projekte mit unterschiedlichen Versionen für das Paket enden, die angeheftet werden sollen, und damit gegen das Versprechen der Verwendung der zentral definierten Version.

NuGet empfiehlt die Verwendung von Automatisierung wie Dependabot , um Paketversionen up-to-datum beizubehalten, die eine optimierte Möglichkeit zum Aktualisieren von Paketversionen bietet, während sie in Ihren vorhandenen Entwicklerworkflow einer Pull-Anforderung, automatisierte Buildüberprüfung und alle von einem Commit in Ihrem Repository gesicherten Tests integriert werden.

Lösung

<ItemGroup>
  <PackageVersion Include="PackageName" Version="1.0.0" />
</ItemGroup>
  • Wenn dies nicht möglich ist oder Sie unverankerte Versionen mit der zentralen Paketverwaltung verwenden möchten, können Sie dies tun, indem Sie eine MSBuild-Eigenschaft festlegen:
<PropertyGroup>
  <CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
</PropertyGroup>