Domanda

Ho un progetto VS2008 scritto in c # con un numero di assiemi. Mi piacerebbe avere un modo semplice di gestire i numeri di versione tra tutti i diversi assembly e un modo per incrementare automaticamente il numero di build e salvarlo nel numero di versione di ciascun assembly.

Suppongo che questo sia un problema con la maggior parte dei progetti, quindi presumibilmente è stato risolto prima?

Qualche suggerimento su come posso semplificare la gestione delle risorse della versione del mio progetto?

È stato utile?

Soluzione

Uso un file .cs a livello di soluzione collegato da tutti i progetti nella soluzione che contiene le seguenti righe:

using System.Reflection;
[assembly : AssemblyVersion("1.2.3.*")]

E assicurati di rimuovere l'attributo AssemblyFileVersion dal file AssemblyInfo nel tuo progetto.

Altri suggerimenti

Inserisci un file nella soluzione, chiama questo " SolutionInfo.cs " (Suppongo C #, funzionerebbe anche in VB). In questo mettere tutte le proprietà che hai in comune. Inizia con AssemblyVersionAttribute .

Quindi in ogni progetto collegamento a questo selezionando l'opzione Aggiungi elemento esistente a ciascun progetto, ma anziché fare clic su Aggiungi, utilizzare il menu a discesa per aggiungere come collegamento.

Abbiamo un singolo file AssemblyInfoGlobal.cs a livello di soluzione, come le altre risposte. Quindi abbiamo come parte del nostro script di compilazione una piccola applicazione che prende la CCNetLabel definita da CruiseControl.net (e utilizza defaultLabeller per generare le etichette) e controlla il file globale, modifica il numero di versione e quindi ricontrolla il file globale .

Alcuni dei nostri progetti hanno molteplici soluzioni, quindi il file globale si trova al di sopra del livello di soluzione nella struttura della directory, abbastanza alto da rendere tutto ciò che ne ha bisogno al di sotto.

Aggiorniamo anche i numeri di versione dei progetti di distribuzione - il numero per questi si trova nel file VDProj, ma non sono sicuro che li troverai nelle versioni espresse - penso che sia una funzionalità completa professionale verso l'alto. E alcuni progetti hanno una dozzina di progetti di distribuzione, ma nessun modo semplice per esternalizzare la versione numerof dal file VDPROJ stesso. (o c'è?)

Quindi si verifica la build, il che significa che tutti gli output della build hanno esattamente lo stesso numero di versione, in qualsiasi momento possiamo ottenere la versione dall'MSI o dall'assembly e sappiamo esattamente quale sorgente è stata utilizzata per creare quell'output.

  

utilizzando System.Reflection;   [assembly: AssemblyVersion (" 1.2.3. * ")]

Solo un commento su questo, il numero di versione generato automaticamente cicla. Quindi, se stai cercando di essere in grado di eseguire una versione in modo tale che una build ieri abbia una versione 1.2.3.X in cui X < X una build oggi, questa non è la strada da percorrere.

Per raggiungere questo scopo

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

Questo ti porterà alla versione 1.2.X.Y dove la combinazione di X.Y è più grande oggi rispetto a ieri. Immagino che X.Y sia una funzione di data e ora rispettivamente

È possibile scrivere un'attività MSBuild personalizzata per fare ciò. Dai un'occhiata a questo approccio

Puoi usare asterischi in AssemblyInfo.cs:

// Version information
[assembly: AssemblyVersion( "1.0.*" )]

Aumenterà automaticamente i numeri della tua versione. Per condividere un numero tra tutti gli assembly ... Non ne sono sicuro, ma forse usi l'attributo citato in un file condiviso.

Ho usato svnversion Attività della community di MSBuild per fare qualcosa di simile questo, ho seguito le istruzioni qui Anche se il modo in cui lo faccio non si estende su più assembly.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top