Sovversione AssemblyInfo.cs e TortoiseSVN
-
06-07-2019 - |
Domanda
Sto usando TortoiseSVN e Visual Studio 2008. Esiste un modo per aggiornare assemblyinfo.cs del mio progetto con la versione di svn in ogni build?
Ad esempio, 1.0.0. [versione di svn] - > 1.0.0.12
Soluzione
È possibile utilizzare lo strumento SubWCRev fornito con TortoiseSVN (anche disponibile separatamente).
Eseguilo da una riga di comando o usa COM- Oggetto offre.
Lo strumento da riga di comando per SubWCRev sostituisce le parole chiave all'interno di un file con informazioni dalla tua copia di lavoro svn. Un esempio è mostrato nei documenti.
Altri suggerimenti
Lo faccio nel mio build script :
<SvnInfo LocalPath=".">
<Output TaskParameter="Revision" PropertyName="BuildRev" />
</SvnInfo>
<FileUpdate Files="protobuf-net\Properties\AssemblyInfo.cs"
Regex='(\[\s*assembly:\s*AssemblyVersion\(\s*"[^\.]+\.[^\.]+)\.([^\.]+)(\.)([^\.]+)("\)\s*\])'
ReplacementText='$1.$2.$(BuildRev)$5' />
utilizzando le attività di creazione della community . Questo essenzialmente applica una regex a AssemblyInfo.cs, sostituendo la revisione corrente con la revisione svn.
È possibile utilizzare $ Rev $
svn parola chiave ma che ti darà l'ultima revisione del file, penso che tu voglia ottenere il numero di revisione HEAD
.
Dai un'occhiata a questa domanda:
Cosa pensi di un Visual Studio addin che lo sta facendo?
Sì, puoi aggiungere un evento pre-build che chiama uno script che
- chiama
svn info
per estrarre il numero di revisione corrente (se hai fatto un aggiornamento prima, puoi includere direttamente la parola chiave$ Revision $
in un file, controlla anche < a href = "https://stackoverflow.com/questions/1620598/how-to-get-the-current-revision-number-into-a-file-after-export/1620624#1620624"> questo post ); - modifica di conseguenza il file Properties \ AssemblyInfo.cs.
Quello che faccio di solito è trasformare un modello AssemblyInfo.cs quando viene creato il progetto. Lo script è necessario per adattare la forma di $ Revision $ alla sintassi di questo file, sfortunatamente.
Le proprietà interessanti sono (dove le stringhe del modello sono tra '$'):
[assembly: AssemblyVersion("$v$.$build$.$Last Changed Rev<*>quot;)]
[assembly: AssemblyFileVersion("$v$.$build$.$Last Changed Rev<*>quot;)]
Modifica: svn info
fa parte del client SVN standard, non TortoiseSVN come sottolineato in un altro post. Facile da installare però. Tuttavia, TortoiseSVN viene fornito con SubWCRev.exe
che trasforma un file con sostituzione di parole chiave, quindi farebbe il trucco se aggiorni la tua copia locale.
In Visual Studio 2008, è possibile definire un evento pre-build in grado di avviare uno script o un piccolo programma. All'interno di questo script o programma, è possibile utilizzare il comando svnversion per ottenere la revisione del repository, quindi analizzare AssemblyInfo.cs e modificare il numero di versione come desiderato.
Non sono sicuro se TortoiseSVN viene fornito con svnversion, ma viene fornito con Windows Build SVN fornito da CollabNet
Ho creato un plug-in versione SVN per il Progetto Incremento versione build (che è chiamato nella risposta di popester). Questo plug-in SVN estrarrà l'ultimo numero di revisione delle modifiche dalla tua copia di lavoro e ti consentirà di utilizzarlo nel tuo numero di versione, il che dovrebbe realizzare esattamente ciò che stai cercando di fare.