程序集版本最后一位使用SVN版本号的自动生成方法
来源:互联网 发布:淘宝商的进货渠道 编辑:程序博客网 时间:2024/06/15 19:50
使用SVN进行源代码版本控制时,我们希望能够快速找到每个发布版 本对应的源代码版本,现在可以通过在程序集的版本信息中增加SVN 源码版本信息的方式来实现我们的要求。
现在我们定义每个程序集的版本信息的最末段表示SVN的源码版本。详细定义如下:
程序集版本号分为4段,例如1.0.4.23。
- 第一段为主版本号,项目一但启动则不会更改。
- 第二段为次版本号,在项目功能做较大调整时增加,增量为1。
- 第三段为修订版本号,通常在解决缺陷或者细微功能变化时增加
,增量为1或者2。该版本号分奇数和偶数两种。奇数表示测试版本 ,偶数表示稳定版本。 - 第四段为SVN源码版本号,该版本号通过脚本自动生成。
使用脚本自动生成SVN版本号的先决条件:
- 安装TortoiseSVN;
- 源代码在SVN版本管理控制之下。
修改项目设置,使之能够自动生成版本号:
- 修改Properties/AssemblyInfo.cs文件
,将程序集版本信息的最末一段改为$WCREV$。并增加一行" //最后发布时间:$WCDATE$"
例如:[assembly: AssemblyVersion("1.1.0.$WCREV$")]
[assembly: AssemblyFileVersion("1.1.0.$WCREV$")]//最后发布时间:$WCDATE$
- 将AssemblyInfo.cs文件重名为AssemblyIn
fo.tpl,并添加到源代码管理。 - 从源代码仓库中删除AssemblyInfo.cs,并排除它,使其不受版本管理。
- 添加本文中的GenerateAssemblyInfo
.bat文件到Properties目录中,并添加到源代码管理。 - 修改项目属性,在生成事件的预生成事件命令行中添加以下命令。
"$(ProjectDir)/Properties/GenerateAssemblyInfo.bat" "$(ProjectDir)" ./Properties/AssemblyInfo.tpl ./Properties/AssemblyInfo.cs
注意:
- 在 编译之前记得提交你的更改和更新别人的更改,这样才能确保版本号的正确。
- 今后要对程序集信息进行修改时,请对AssemblyInfo.tpl文件进行修改。
- 如果生成的AssemblyInfo.cs文件出现中文乱码,打开AssemblyInfo.tpl,在文件->高级保存选项中将文件编码改为UTF-8即可。
脚本
GenerateAssemblyInfo.bat
::-----------------------------
::** Initialize
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
REM Initialize Constants
SET TSVN_INFO_FILE=./TSVN_INFO.tmp
REM Initialize script arguments
SET workDir=%1
SET template=%2
SET target=%3
REM Goto main entry
GOTO MAIN
::=============================
::-----------------------------
::** Main entry
:MAIN
pushd %workDir%
SET workDir=./
REM 检查参数
IF %workDir%=="" GOTO ARGUMENT_ERROR
IF %template%=="" GOTO ARGUMENT_ERROR
IF %target%=="" GOTO ARGUMENT_ERROR
REM 查询注册表
reg query HKLM/SOFTWARE/TortoiseSVN /v Directory > %TSVN_INFO_FILE% 2>NUL
REM 查找 TSVN 路径
FOR /F "tokens=*" %%i IN (%TSVN_INFO_FILE%) DO (
ECHO %%i | find "Directory" > NUL
IF %ERRORLEVEL% == 0 (
ECHO %%i > %TSVN_INFO_FILE%
)
)
SET /P TSVN_PATH= < %TSVN_INFO_FILE%
SET TSVN_PATH=%TSVN_PATH:~17,-1%
REM 调用 TSVN 替换模板
IF NOT %ERRORLEVEL% == 0 GOTO UNKNOW_ERROR
"%TSVN_PATH%bin/SubWCRev.exe" %workDir% %template% %target% >NUL
IF NOT %ERRORLEVEL% == 0 GOTO UNKNOW_ERROR
GOTO SUCESSED
::=============================
::-----------------------------
::** Error handlers
:ARGUMENT_ERROR
ECHO 传入的参数无效。
GOTO FAIL
:NOT_FOUND_TSVN
ECHO 查询TortoiseSVN 的安装信息失败。
GOTO FAIL
:UNKNOW_ERROR
ECHO 生成程序集信息出现未知错误。
:FAIL
::=============================
::-----------------------------
::** Program exit
:FAIL
DEL /Q %TSVN_INFO_FILE% 2>NUL
ECHO 生成程序集信息失败。
popd
EXIT 1
:SUCESSED
DEL /Q %TSVN_INFO_FILE% 2>NUL
ECHO 生成程序集信息成功。
popd
EXIT 0
::=============================
::-----------------------------
::** Initialize
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
REM Initialize Constants
SET TSVN_INFO_FILE=./TSVN_INFO.tmp
REM Initialize script arguments
SET workDir=%1
SET template=%2
SET target=%3
REM Goto main entry
GOTO MAIN
::=============================
::-----------------------------
::** Main entry
:MAIN
pushd %workDir%
SET workDir=./
REM 检查参数
IF %workDir%=="" GOTO ARGUMENT_ERROR
IF %template%=="" GOTO ARGUMENT_ERROR
IF %target%=="" GOTO ARGUMENT_ERROR
REM 查询注册表
reg query HKLM/SOFTWARE/TortoiseSVN /v Directory > %TSVN_INFO_FILE% 2>NUL
REM 查找 TSVN 路径
FOR /F "tokens=*" %%i IN (%TSVN_INFO_FILE%) DO (
ECHO %%i | find "Directory" > NUL
IF %ERRORLEVEL% == 0 (
ECHO %%i > %TSVN_INFO_FILE%
)
)
SET /P TSVN_PATH= < %TSVN_INFO_FILE%
SET TSVN_PATH=%TSVN_PATH:~17,-1%
REM 调用 TSVN 替换模板
IF NOT %ERRORLEVEL% == 0 GOTO UNKNOW_ERROR
"%TSVN_PATH%bin/SubWCRev.exe" %workDir% %template% %target% >NUL
IF NOT %ERRORLEVEL% == 0 GOTO UNKNOW_ERROR
GOTO SUCESSED
::=============================
::-----------------------------
::** Error handlers
:ARGUMENT_ERROR
ECHO 传入的参数无效。
GOTO FAIL
:NOT_FOUND_TSVN
ECHO 查询TortoiseSVN 的安装信息失败。
GOTO FAIL
:UNKNOW_ERROR
ECHO 生成程序集信息出现未知错误。
:FAIL
::=============================
::-----------------------------
::** Program exit
:FAIL
DEL /Q %TSVN_INFO_FILE% 2>NUL
ECHO 生成程序集信息失败。
popd
EXIT 1
:SUCESSED
DEL /Q %TSVN_INFO_FILE% 2>NUL
ECHO 生成程序集信息成功。
popd
EXIT 0
::=============================
- 程序集版本最后一位使用SVN版本号的自动生成方法
- 程序集版本最后一位使用SVN版本号的自动生成方法
- 程序集版本中使用SVN版本号自动生成方法详解
- 工具——基于SVN自动生成版本号的方法
- C# VS2008, VS2010 .NET 使用 SVN 的自动生成版本号
- SVN自动生成版本号
- 命令获取svn 版本号 最后修改版本
- .net 程序集自动生成版本号
- VS之版本-编译时自动生成版本-自动获取svn版本号
- 利用SVN实现自动版本号生成
- 利用SVN实现自动版本号生成
- 利用SVN实现自动修订版本号生成
- 利用SVN实现自动版本号生成
- VS 2005/2008生成程序的自动版本号问题
- Vsiual Studio自动生成版本号的一种方法
- 编译.NET程序自动产生不同的版本号的方法
- 在Makefile动态生成程序版本号的方法
- 利用VS的预生成事件获取SVN版本作为项目内部版本号
- C# 2005 打包MSDE并且自动附加数据库
- 转载自王宾ID:laiahu 获得资源文件的key和value
- mysql任务计划(转)
- vs.net2005技术总结
- 存储过程中使用函数作为默认参数
- 程序集版本最后一位使用SVN版本号的自动生成方法
- ZZ为了忘却的纪念------怀念我在HKUST-CSE的日子(完全版)
- SQL Server 索引基础知识(1)--- 记录数据的基本格式
- Subversion的配置和使用(1)
- 沙漠行舟-开博首记
- 沙漠行舟-开博首记
- Subversion配置和使用之服务器端配置说明(2)
- 如何向用户控件传递参数
- Subversion配置和使用之客户端使用说明(3)