2012-08-15 16 views
25

Durante la creazione di un pacchetto nuget, la versione nel nome file del pacchetto nuget sembra provenire dal file AssemblyInfo nel progetto di applicazione Web. Ho anche creato un attributo di versione all'interno del file nuspec.Attributo versione NuSpec vs versione assembly

Qual è la relazione tra questi due numeri di versione e sono presenti delle convenzioni?

risposta

18

per quanto riguarda la convenzione , il software NuGet stesso, e la semantica si applica ai pacchetti in galleria, fa delle versioni come descritto da SemVer. In particolare è possibile designare versioni beta con il suffisso del numero di versione di nuspec con "-beta.4" o qualcosa del genere. Ad esempio, vedi come la galleria visualizza the latest version of AutoFac e confronta come visualizza an old release ( nota il testo "Questa non è l'ultima versione di Autofac disponibile."Modifica: La galleria non sembra più fornire alcun messaggio speciale per non -correnti correnti) e an old PRE-release version (con il testo "Questa è una versione preliminare di Autofac.").

Sfortunatamente, lonon può contenere lettere o trattini, pertanto non può essere utilizzato in questo modo. Tuttavia lo AssemblyInformationalVersion MAGGIO contiene lettere e trattini e, se lo fornite, NuGet lo utilizzerà al posto dello AssemblyVersion per sostituire il token $version$ nel file nuspec. Inoltre, lo AssemblyInformationalVersion (chiamato anche "Versione prodotto" se si controllano i dettagli di una DLL in Windows Explorer), almeno per me, rappresenta meglio ciò che dovrebbe corrispondere alla versione di NuGet.

Ho una leggera preoccupazione con questo approccio in quanto io sono prevede di lasciare il AssemblyVersion lo stesso attraverso varie iterazioni beta e un'iterazione produzione finale del AssemblyInformationalVersion, il che significa che sto permettendo diverse versioni della mia DLL in il selvaggio che può comportarsi in modo diverso o errato, tuttavia sono tutti identici per quanto riguarda il CLR (il CLR solo si prende cura di AssemblyVersion). In pratica, tuttavia, ciò accade frequentemente (incluso con i pacchetti AutoFac sopra descritti) e non sembra causare problemi.

Vedere le due eccellenti risposte più votate a What are differences between AssemblyVersion, AssemblyFileVersion and AssemblyInformationalVersion? per ulteriori informazioni su AssemblyInformationalVersion e amici.

7

Non è necessario che vi sia una relazione tra la versione dell'assieme e la versione del pacchetto nuget. Per convenzione, molti manutentori usano lo stesso numero per entrambi.

La convenzione per l'utilizzo dello stesso numero è anche il valore predefinito nuget.exe se non si dispone di nuspec oppure si utilizza nuget.exe spec per creare un file nuspec tokenizzato. Tuttavia, se si sostituisce il token $ version $ con un valore, tale valore avrà la precedenza e verrà utilizzato nel nome del file del pacchetto.

È anche possibile impostare la versione sulla riga di comando, che ha la precedenza su tutto quanto sopra.

Maggiori informazioni sul blog di Xavier: NuGet $version$ token explained

Problemi correlati