2011-08-23 10 views
5

Sto usando il MSBuild Community Task library per ottenere la versione SVN corrente un set che nei miei file AssemblyInfo per ottenere la revisione nella dll compilata finale.Come impostare il numero di versione SVN su dll .NET utilizzando la libreria di attività di MSBuild Task

Come sapete, la versione SVN può essere come "28" o "28M" - se ci sono modifiche. Se faccio un messaggio MSBuild e restituisco la proprietà Revision, vedo che ottengo un 28M dopo la modifica, ma quando aggiorno AsseblyInfo continuo a ricevere solo 28 nel numero di versione ..?

Mi piacerebbe avere il 28M nel numero di versione per indicare che la DLL è stata creata utilizzando una modifica non in check-in. Come posso farlo funzionare?

<Target Name="Compile"> 
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(SvnTool)"> 
    <Output TaskParameter="Revision" PropertyName="Revision" /> 
</SvnVersion> 

<ItemGroup> 
    <AssemblyInfoFiles Include="x.a\Properties\AssemblyInfo.cs" /> 
    <AssemblyInfoFiles Include="x.b\Properties\AssemblyInfo.cs" /> 
</ItemGroup> 

<FileUpdate Files="@(AssemblyInfoFiles)" 
      Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)" 
      ReplacementText="$(MajorVersion).$(MinorVersion).$(Revision).0" /> 

<MSBuild Projects="$(MSBuildProjectDirectory)\ConfigExplorer.sln" Targets="Rebuild" Properties="Configuration=$(BuildType);" /> 

+2

Non è possibile avere 28M come numero di revisione perché la revisione è dichiarata come 'int' nella classe Versione : 'public int Revision {get; } '. Ma puoi usare, ad esempio, attributo AssemblyInformationalVersionAttribute per memorizzare qualsiasi testo che ti piace. –

risposta

4

.Net numeri di versione assembly vengono severamente digitati. Non si tratta solo di una stringa, ma di un numero maggiore di 65535 (vedi documenti http://msdn.microsoft.com/en-us/library/cbf1574z.aspx). Se usi la revisione svn (come ho fatto in un punto), la tua build si interromperà una volta che supererà quel numero magico.

Uno schema che ho utilizzato anche quello build builder di sviluppo vs build CI è stato quello di utilizzare le versioni nel formato {year}.{month}.{day}.{build} in cui il numero di build è stato specificato con un parametro di build aggiuntivo. Questo ci ha dato la data della compilazione, oltre a indicare se si trattava di una build sviluppatore (ovvero l'ultimo componente era zero)

+0

Hai sottolineato il problema del numero di revisione SVN e se @Riri decide di utilizzare un altro modo per generare il numero di versione, forse troverà questo utile, http://archive.msdn.microsoft.com/AssemblyInfoTaskvers –

Problemi correlati