NuGet-Fehler NU1011
Zentral definierte unverankerte Paketversionen sind nicht zulässig.
Problem
Standardmäßig <PackageVersion />
können Elemente keine unverankerten Versionen enthalten. NuGets zentrale Paketverwaltung (CPM) wird als Feature auf Unternehmensebene betrachtet, das die Versionsverwaltung im großen Maßstab sowie deterministische und sichere Wiederherstellungen erleichtert. 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 in Ihrem Repository vorgenommen haben, aber plötzlich etwas kaputt ist und es für Sie keine Möglichkeit gibt, einen guten Zustand wiederherzustellen, ohne die schwebende Version zu entfernen oder eine neuere Version des Pakets zu pushen, die korrigiert 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 einen Commit rückgängig machen, um wieder in einen guten Zustand zu gelangen.
Die Transitive Pinning-Funktion ist so konzipiert, dass Sie die transitiven Versionen in Ihrem Diagramm explizit außer Kraft setzen können, um mehr Kontrolle zu erhalten. Die Verwendung einer unverankerten Version als Außerkraftsetzung könnte dazu führen, dass Wiederherstellungen verschiedener Projekte mit unterschiedlichen Versionen für das Paket zusammengeheftet werden sollen, sodass sie gegen das Versprechen der Verwendung der zentralen Version gehen.
NuGet empfiehlt die Verwendung von Automatisierung wie Dependabot , um Paketversionen auf dem neuesten Stand zu halten, die eine optimierte Möglichkeit bieten, Pakete aktualisiert zu halten, 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
Es wird empfohlen, die unverankerte Version in einen nicht unverankerten Versionsbereich zu ändern. Wenn dies nicht möglich ist, können Sie unverankerte Versionen mit CPM aktivieren, indem Sie eine MSBuild-Eigenschaft festlegen:
<PropertyGroup>
<CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
</PropertyGroup>