Insert SVN version and Build number in your C# AssemblyInfo file

Software version number is quite important. It helps you track what versions have your users when they report something. And when it’s linked to an SVN version number, it’s even better.

Well, with MSBuild Community Task, you can easily automatically generate smart version numbers, you have to:

  • Download MSBuildCommunityTasks
  • Make sure your “svn.exe” binary is in C:\program files\subversion\bin
  • Add this at the end of your .csproject file :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!-- Import of the MSBuildCommunityTask targets -->
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
 
<!-- to manage version number -->
<Target Name="Version">
  <Version VersionFile="version.txt" RevisionType="Increment">
    <Output TaskParameter="Major" PropertyName="Major" />
    <Output TaskParameter="Minor" PropertyName="Minor" />
    <Output TaskParameter="Build" PropertyName="Build" />
    <Output TaskParameter="Revision" PropertyName="Revision" />
  </Version>
</Target>
 
  <!-- to generate our personnal version info -->
  <Target Name="AssemblyInfo">
 
  <SvnVersion LocalPath="$(MSBuildProjectDirectory)">
    <Output TaskParameter="Revision" PropertyName="Build" />
  </SvnVersion>
 
  <AssemblyInfo
    CodeLanguage="CS"
    OutputFile="Properties\AssemblyInfo.cs"
    AssemblyTitle="Title"
    AssemblyDescription="Description"
    AssemblyCompany="Company"
    AssemblyProduct="product"
    AssemblyCopyright="Copyright © 2009"
    ComVisible="false"
    Guid="88812638-9547-4480-9bf4-4fe25103b35c"
    AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)"
    AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)"
    Condition="$(Revision) != '0' "/>
</Target>
 
<!-- We launch these two targets -->
<Target Name="BeforeBuild">
    <CallTarget Targets="Version" />
    <CallTarget Targets="AssemblyInfo" />
</Target>
 
<Target Name="AfterBuild">
</Target>

You should only have a “</Project>” field left…

Then, you just have to open your project and build your project, it will fail once (missing version.txt file) and then work forever. This will generate your Assembly & AssemblyFile versions like this: Major.Minor.SvnVersion.BuildVersion

In your C# code, to get your version, you just have to add something like that:

1
2
3
4
5
public static String Version {
  get {
    return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
  }
}
GD Star Rating
loading...
Posted in English. Tags: , . 9 Comments »