2011-08-23 12 views
5

Używam MSBuild Community Task library, aby uzyskać aktualną wersję SVN, że w moich plikach AssemblyInfo, aby uzyskać wersję w ostatecznej skompilowanej dll.Jak ustawić numer wersji SVN na .NET dll przy użyciu biblioteki zadań MSBuild Community

Jak wiadomo, wersja SVN może wyglądać jak "28" lub "28M" - jeśli są modyfikacje. Jeśli robię wiadomość MSBuild i wyprowadzam właściwość wersji widzę, że dostaję 28M po modyfikacji, ale przy aktualizacji AsseblyInfo ciągle otrzymuję tylko 28 w numerze wersji ..?

Chciałbym mieć 28M w numerze wersji, aby wskazać, że biblioteka dll została zbudowana przy użyciu modyfikacji niezweryfikowanej. Jak mogę to sprawić?

<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

Nie można mieć 28M jako numeru wersji, ponieważ rewizja jest zadeklarowana jako "int" w klasie wersji : 'public int Revision {get; } '. Ale zamiast tego możesz użyć atrybutu AssemblyInformationalVersionAttribute do przechowywania dowolnego tekstu, który ci się podoba. –

Odpowiedz

4

.Net numery wersji zespoły są surowo wpisane. Nie są one po prostu żadnym ciągiem, ale ushortami, co oznacza, że ​​mają maksimum 65535 (zob. Dokumentacja http://msdn.microsoft.com/en-us/library/cbf1574z.aspx). Jeśli użyjesz wersji svn (tak jak zrobiłem to w jednym punkcie) twoja kompilacja zostanie przerwana, gdy przekroczy ona tę liczbę magiczną.

Schemat, którego użyłem również, który wskazywał kompilacje programistów, a kompilacje CI miały używać wersji w postaci {year}.{month}.{day}.{build}, gdzie numer kompilacji został określony z dodatkowym parametrem budowania. Dało nam to datę kompilacji, a także wskazało, czy była to kompilacja programisty (tj. Ostatni komponent to zero).

+0

Wskazałeś na problem z numerem rewizji SVN i jeśli @Riri zdecyduje się użyć innego sposobu na wygenerowanie numeru wersji, może on/ona uzna to za przydatne, http://archive.msdn.microsoft.com/AssemblyInfoTaskvers –

Powiązane problemy