为了实现C#项目中的SVN版本控制,我找了许多资料,然后在实际使用中又简化了下,只需要一份模板文件以及VS项目中生成前后事件的一些设置即可。
在C#项目中,记录程序版本的是AssemblyInfo.cs文件。版本参数为:[assembly: AssemblyVersion()]和[assembly:AssemblyFileVersion()]。其中第二个参数决定了程序文件属性中的文件版本和产品版本。
为了实现版本控制,要设置一份模板文件。我们将AssemblyInfo.cs文件创建一份副本,并命名为AssemblyInfo.tpl,将其中的版本参数设置为[assembly:AssemblyVersion("1.0.0.$WCREV$)"],以及 [assembly:AssemblyFileVersion("1.0.0.$WCREV$")]。
在VS中,右键点击项目-》属性-》生成事件,在预先生成事件命令行中添加两行:
COPY /y "$(ProjectDir)Properties\AssemblyInfo.cs" “$(ProjectDir)Properties\AssemblyInfo.cs.bak" > NUL
"SubWCRev.exe" $(ProjectDir) "$(ProjectDir)Properties\AssemblyInfo.tpl" "$(ProjectDir)Properties\AssemblyInfo.cs" > NUL
同时在后期生成事件命令行中添加两行
COPY “$(ProjectDir)Properties\AssemblyInfo.cs.bak" "$(ProjectDir)Properties\AssemblyInfo.cs" >NUL
DEL /Q “$(ProjectDir)Properties\AssemblyInfo.cs.bak" 2>NUL
这几行命令就能解决版本写入的问题。它会将当前的SVN版本号写入到程序属性中。
之所以直接使用"SubWCRev.exe",是因为TortoiseSVN在安装后会自动写入环境变量,不需要再考虑环境变量的问题。
素材来自于http://www.cnblogs.com/NewIdea/p/AutoVersion.html,主要在他的基础上进行了简化。