在軟件開發過程中,每次對一個軟件產品的release,都要處理該軟件版本號。有的版本號是人爲定的,有些是自動生成的,本文介紹在使用SVN版本管理軟件的情況下,利用SVN的一個命令來自動生成對應svn修改版本的版本號。
下面使用visual studio (C#) 軟件開發環境作爲介紹,其它依葫蘆畫瓢。
如:我提交了一次代碼修改,對應的svn revision是15849:
如果我要針對此次修改,release一個新的軟件版本,對於版本號,一般是在Assembly.cs文件中進行修改:
[assembly: AssemblyVersion("2.2.13")]
[assembly: AssemblyFileVersion("2.2.13")]
[assembly: AssemblyCompany("xxx Technology")]
[assembly: AssemblyCopyright("Copyright © xxx 2009-2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
如果我不想每次都手動來修改這裏,可以使用上面的SVN命令,來自動生成Assembly.cs文件,每次都能將修改的revision自動寫入到Assembly.cs,只需要:
1)新建一個GlobalAssembly.cs文件,寫成:
[assembly: AssemblyVersion("2.2.13.$WCREV$")]
[assembly: AssemblyFileVersion("2.2.13.$WCREV$")]
[assembly: AssemblyCompany("xxx Technology")]
[assembly: AssemblyCopyright("Copyright © xxx 2009-2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
2) 新建一個bat文件,寫成(相對路徑自己定義):
subwcrev .\ GlobalAssembly.cs Assembly.cs
4)最後雙擊運行bat文件,就會自動生成我們需要的Assembly.cs文件,文件內容如下,只要在項目中引用這個文件就行了:
[assembly: AssemblyVersion("2.2.13.15849")]
[assembly: AssemblyFileVersion("2.2.13.15849")]
[assembly: AssemblyCompany("xxx Technology")]
[assembly: AssemblyCopyright("Copyright © xxx 2009-2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
引用文件的時候注意 選擇Add as link:
如果要在程序的【About】中顯示版本號,可以按照下面的方式來獲取:
public string Version
{
get
{
Assembly executingAssembly = Assembly.GetExecutingAssembly();
object[] attrs = executingAssembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true);
if (attrs.Length > 0)
{
AssemblyFileVersionAttribute assemblyVersion = attrs[0] as AssemblyFileVersionAttribute;
Version version = new Version(assemblyVersion.Version);
return string.Format(Thread.CurrentThread.CurrentUICulture, LocalizingResources.DynamicUIData_AboutDialog_VersionDescription, version.Major, version.Minor, version.Build, version.Revision);
}
return "x.x.x.x";
}
}