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

È stato utile?

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.

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