2012-09-06 18 views
8

Sto cercando di trovare un modo più significativo per gestire versioni per la mia app e sono venuto acrossed questo articolo KBVersione di assembly fissa con versione di file incrementale automatica?

http://support.microsoft.com/kb/556041

In sostanza è raccomandando che la versione Assemblea essere fisso, e la versione di file essere imcremented per ogni build. Ora questo ha perfettamente senso per me, ma per la vita di me non riesco a realizzarlo.

Il frammento di seguito automatico incrementa sia la versione di Assemblaggio che la Versione di File.

[assembly: AssemblyVersion("1.0.*")] 

Anche se questo prossimo sembra fissare una versione Assemblea fissa di 1.0.0.0 e un file versione fissa di 1.0.*.

[assembly: AssemblyVersion("1.0")] 
[assembly: AssemblyFileVersion("1.0.*")] 

Per inciso, la versione del prodotto nella scheda Dettagli delle proprietà del file si legge 1.0.* ora pure. Ora posso fissare la versione del prodotto nelle proprietà del file con questo ...

[assembly: AssemblyInformationalVersion("1.0")] 

Ma questo non aiuta con il mio compito originale. Per curiosità ho provato il seguito e la versione del file è stata modificata in 2.0.*, quindi è almeno l'utilizzo. Non è solo l'incremento automatico.

[assembly: AssemblyVersion("1.0")] 
[assembly: AssemblyFileVersion("2.0.*")] 

Quindi, da quello che ho potuto capire l'unico numero di versione che incrementi Automatico è l'Assemblea versione, ma sulla possibilità off Non è stata specificata una versione del file che viene impostata la stessa della versione dell'Assemblea.

Qualcuno sa di un modo per incrementare automaticamente la versione del file lasciando fissa la versione dell'Assieme?

risposta

11

Sì, è un po 'sciocco, Microsoft sembra aver preso la strada sbagliata. AssemblyVersion viene utilizzato nel sistema di controllo delle versioni di .NET, quindi non è mai necessario incrementarlo automaticamente, ma AssemblyFileVersion viene scritto nella voce della versione del file nella risorsa della versione del file, pertanto è ragionevole aspettarsi che venga sempre incrementato automaticamente per impostazione predefinita.

Sono sicuro che ci sono alcuni sistemi di generazione di terze parti che possono farlo per voi, ma ho appena scritto una piccola applicazione C# a riga di comando per farlo, e viene eseguito su ogni progetto come parte del nostro processo di costruzione. È molto semplice:

  1. Leggere il file AssemblyInfo.cs riga per riga.
  2. Effettuare una ricerca RegEx per la riga AssemblyFileVersion, catturando tutte e quattro le parti della versione in gruppi di acquisizione separati. Potresti analizzarlo da solo, ma una regex farà tutto il rilevamento e l'analisi in una volta sola, quindi sembra sciocco non approfittarne.
  3. Una volta ottenuti i quattro numeri interi, implementare la propria logica di incremento come si ritiene opportuno.
+2

Quindi non sono solo io che ho trovato questo strano? Microsoft ha effettivamente aggiunto una funzione che non consiglia di utilizzare? Ok, beh, immagino che il prossimo passo sia vedere se posso farlo usando le attività di compilazione ... –

Problemi correlati