为了实现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,主要在他的基础上进行了简化。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐