2009-09-05 6 views
5

Voglio fare un target nel mio script MSBuild che:Aggiornamento informazioni versione con MSBuild (dopo binari compilazione)

  • Fetch SVN revisione/datetime dalla cartella fonti (comando 'info svn')
  • Aggiornamento Risorsa VERSIONINFO da .EXEs e DLL generati dall'obiettivo 'build'

C'è qualcosa pronto per realizzare questo? Sto chiedendo poco prima di reinventare un'altra ruota ...

Sto dando uno sguardo in http://msbuildextensionpack.codeplex.com

+0

+1 per una bella domanda, sarei interessato a farlo da solo. – 7wp

+0

Anch'io! - Ma la nostra (interna) soluzione interna sta funzionando bene. Quindi ... :) –

risposta

5

MSBuild Community Tasks Project è tuo amico. Controlla il loro compito "SvnInfo".

Inoltre, di Daniel Doubrovkine ResourceLib è un ottimo lavoro e può evitare un sacco di mal di testa quando si cerca di districare la creazione pasticcio VERSIONINFO (stato lì, fatto che ...)

+0

Grazie mille! –

+0

Nota che ResourceLib è stato spostato su Github: https://github.com/dblock/resourcelib –

1

Molto più facile farlo prima compilazione scrivendo un file AssemblyInfo (o qualsiasi file con attributi assembly) incluso nei tuoi progetti.

Esempio di scrivere questo in PowerShell trovato qui: https://github.com/craigbeck/rhino-esb/blob/master/psake_ext.ps1#L7-46

Un avvertimento - le versioni in .NET non sono solo una stringa qualsiasi, ma ushort s che significa che hanno un massimo di 65535 (vedi Documentazione here). Se usi la revisione svn (come abbiamo fatto in un punto) la tua build si interromperà una volta che supererà quel numero magico.

Perché dovresti provare a farlo dopo la compilazione?

+0

I file binari sono generati da 5 diversi compilatori. Nessuno di loro per .NET. Ad ogni modo, grazie per il consiglio di ushorts. –

+0

OK, ora sono ancora più curioso ... quali lingue/compilatori? La menzione di DLL e EXE mi ha fatto presumere che stavate parlando dello sviluppo standard di .Net (ad esempio C#/VB, Visual Studio ecc.). Se questo non è il caso, perché hai scelto MSBuild? – craigb

+0

A partire da VS2010, i progetti nativi C++ vengono creati utilizzando msbuild. Esistono strumenti per aggiornare le informazioni sulla versione di Assembly ma per i nativi, la versione è ancora controllata tramite la risorsa VERSIONINFO delle applicazioni (di solito nel file .rc). – jschroedl

Problemi correlati