2012-08-15 11 views
25

Beim Erstellen eines nugget-Pakets scheint die Version im Dateiname des nugget-Pakets aus der Datei AssemblyInfo im Webanwendungsprojekt zu stammen. Ich habe auch ein Versionsattribut in der Nuspec-Datei erstellt.NuSpec-Versionsattribut im Vergleich zur Assemblyversion

Wie ist die Beziehung zwischen diesen beiden Versionsnummern und gibt es irgendwelche Konventionen?

Antwort

18

Im Hinblick auf die Konvention, die NuGet Software selbst, und die Semantik es um Pakete in der Galerie gilt, tun Versionierung von SemVer beschrieben. Speziell können Sie Beta-Versionen durch Suffix Ihrer Nuspec-Versionsnummer mit "-beta.4" oder etwas festlegen. Sehen Sie sich beispielsweise an, wie die Galerie the latest version of AutoFac anzeigt, und vergleichen Sie, wie sie an old release anzeigt (). Beachten Sie den Text "Dies ist nicht die neueste Version von Autofac verfügbar."Bearbeiten: Die Galerie scheint keine spezielle Nachricht mehr für nicht bereitzustellen (aktuelle Versionen) und an old PRE-release version (mit dem Text "Dies ist eine Vorabversion von Autofac.").

Leider kann die AssemblyVersion in AssemblyInfo.cs keine Buchstaben oder Bindestriche enthalten, so dass es nicht auf diese Weise verwendet werden kann. Jedoch kann die AssemblyInformationalVersion Buchstaben und Bindestriche enthalten und, wenn Sie es zur Verfügung stellen, wird NuGet das anstelle der AssemblyVersion Token in Ihrer Nuspec-Datei ersetzen, um das $version$ Token zu ersetzen. Was mehr ist, die AssemblyInformationalVersion (auch als "Produkt-Version", wenn Sie die Details einer DLL in Windows Explorer überprüfen), zumindest für mich, besser darstellt, was die NuGet-Version übereinstimmen sollte.

Ich habe eine leichte Sorge mit diesem Ansatz, dass ich erwartet, dass die AssemblyVersion die gleichen durch verschiedene Beta-Iterationen und eine Endfertigung Iteration der AssemblyInformationalVersion, zu verlassen, was bedeutet, ich bin so dass mehrere verschiedene Versionen meiner DLL in die wilden, die sich anders oder falsch verhalten können, sind aber alle so weit wie die CLR betroffen ist (die CLR nur kümmert sich um AssemblyVersion). In der Praxis passiert dies jedoch häufig (einschließlich der oben beschriebenen AutoFac-Pakete), und es scheint kein Problem zu verursachen.

Sehen Sie die zwei ausgezeichneten Antworten auf What are differences between AssemblyVersion, AssemblyFileVersion and AssemblyInformationalVersion? für mehr Informationen über AssemblyInformationalVersion und Freunde.

7

Es muss keine Beziehung zwischen der Assemblyversion und der nugget-Paketversion bestehen. Per Konvention verwenden viele Betreuer die gleiche Nummer für beide.

Die Konvention für die Verwendung der gleichen Nummer ist auch die nuget.exe Standard, wenn Sie keine nuspec haben, oder Sie verwenden nuget.exe spec, um eine Tokenized Nuspec-Datei zu erstellen. Wenn Sie jedoch das Token $ version $ durch einen Wert ersetzen, hat dieser Wert Vorrang und wird im Paketdateinamen verwendet.

Sie können die Version auch in der Befehlszeile festlegen, die Vorrang vor allen oben genannten Befehlen hat.

Weitere Informationen über Xavier Blog: NuGet $version$ token explained

Verwandte Themen