2011-01-20 13 views
8

Vorrei poter esaminare un assembly e identificare rapidamente il ramo da cui era stato creato.TFS Build: include il nome del ramo nel campo "build number" degli assembly

Qual è il modo migliore per cofigurare TFS Build per includere il nome del ramo corrente nel campo Numero di build (o un campo più appropriato) degli assiemi creati?

+2

Vorrei suggerire di utilizzare [AssemblyConfigurationAttribute] (http://msdn.microsoft.com/en-us/library/system.reflection.assemblyconfigurationattribute.aspx) poiché è destinato a essere utilizzato per la configurazione di configurazione testuale in formato libero informazione. Ti suggerisco inoltre di passare a un pattern in cui hai un file [VersionInfo] (http://stackoverflow.com/questions/62353/what-are-the-best-practices-for-using-assembly-attributes) condiviso tra i progetti in modo che tu possa aggiornare queste informazioni in un unico posto. Non so nulla di TFS, quindi non posso aiutarti con quello. –

+0

@chibacity Il ramo non è una configurazione. AssemblyInformationalVersionAttribute sembrerebbe essere un luogo più appropriato per archiviare tali informazioni. È un po 'strano che non ci sia un attributo assembly esplicitamente per il ramo. – mhenry1384

risposta

4

Dai un'occhiata alla versione Task in http://msbuildtasks.tigris.org/

Essa vi permetterà di aggiornare i AssemblyInfo.cs in costruzione.

che lascia ancora il "come" per identificare il ramo ...

Sul rischio di avere un dibattito religioso sulla versione numerazione si può dedicare una parte della parte major.minor.build.revision al ramo. Ad esempio, major.minor segue solo il numero di versione "esterno/commerciale", build è il modulo di compilazione TFS e la revisione 1 indica il ramo principale, la revisione 2 indica un determinato ramo. È anche possibile utilizzare gli altri attributi della versione di assieme, come AssemblyInformationalAttribute per memorizzare un ID di diramazione in esso.

Non sono completamente aggiornato su come è possibile rilevare il ramo in cui ci si trova ma nel peggiore dei casi si tratta solo di ottenere la directory corrente e applicare una logica per dedurre il nome del ramo. L'output di un ramo tf. il comando dovrebbe anche darti il ​​nome del ramo per un'area di lavoro corrente, ma avrai bisogno di un'attività personalizzata per estrarre solo la prima linea.

Non è una risposta plug-and-play ma potrebbe portarti nella giusta direzione.

+0

Ottimo punto di partenza, grazie. Sono sorpreso che questa non è una domanda più comune con una soluzione semplice però. –

+0

So che questa è una risposta più vecchia; commentando solo per scopi di aggiornamento. Almeno in TFS 2013 e TFS 2015, 'tf branch .' non sembra funzionare. 'tf branch' richiede un argomento di origine e di destinazione e sembra che crei un ramo con il nome di destinazione dalla directory di origine.[fare clic per documentazione] (https://msdn.microsoft.com/en-us/library/d73s8b27.aspx) –

0

La versione è semplice in termini di acquisizione e aggiornamento dei vari file AssemblyInfo.cs.

Organizzerei la struttura TFS in modo simile alle convenzioni di Subversion, quindi disporre di una cartella trunk, tag e rami.

Tramite la denominazione coerente è possibile assicurarsi che il proprio file MSBuild specifico sia sempre un numero impostato di directory dal trunk di un nome di ramo specifico.

Avere un'attività MSBuild personalizzata che funzioni per voi (navigando nella gerarchia di cartelle TFS) e inserirla nella proprietà utilizzata per aggiornare AssemblyInformationalAttribute. È possibile utilizzare l'attività FileUpdate da http://msbuildtasks.tigris.org/ per eseguire una sostituzione Regex nei file AssemblyInfo.cs.

+1

Penso che intendiate AssemblyInformationalVersionAttribute. – mhenry1384

Problemi correlati