AssemblyInfo.cs 颠覆和 TortoiseSVN
-
06-07-2019 - |
题
我正在使用 TortoiseSVN 和 Visual Studio 2008。有没有办法在每个构建中使用 svn 的版本更新我的项目的 assemblyinfo.cs ?
例如,1.0.0.[svn 的版本] -> 1.0.0.12
解决方案
你可以使用TortoiseSVN附带的 SubWCRev 工具单独提供)。
从命令行运行它或使用 COM-它提供的对象。
其他提示
我在构建脚本:
<SvnInfo LocalPath=".">
<Output TaskParameter="Revision" PropertyName="BuildRev" />
</SvnInfo>
<FileUpdate Files="protobuf-net\Properties\AssemblyInfo.cs"
Regex='(\[\s*assembly:\s*AssemblyVersion\(\s*"[^\.]+\.[^\.]+)\.([^\.]+)(\.)([^\.]+)("\)\s*\])'
ReplacementText='$1.$2.$(BuildRev)$5' />
使用社区构建任务。这基本上将正则表达式应用于AssemblyInfo.cs,用svn修订版替换当前版本。
您如何看待Visual Studio addin 呢?
是的,您可以添加一个调用脚本的预构建事件
- 来电
svn info
提取当前版本号(如果您之前进行过更新,可以直接包含关键字$Revision$
在文件中,还检查 这个帖子); - 相应地修改您的 Properties\AssemblyInfo.cs 文件。
我通常做的是在构建项目时转换 AssemblyInfo.cs 模板。不幸的是,该脚本必须使 $Revision$ 的形式适应该文件的语法。
有趣的属性是(其中模板字符串位于“$”之间):
[assembly: AssemblyVersion("$v$.$build$.$Last Changed Rev$")]
[assembly: AssemblyFileVersion("$v$.$build$.$Last Changed Rev$")]
编辑: svn info
是标准 SVN 客户端的一部分,而不是另一篇文章中指出的 TortoiseSVN。不过安装很容易。然而,TortoiseSVN 附带 SubWCRev.exe
它通过关键字替换来转换文件,因此如果您更新本地副本,它就会起作用。
在Visual Studio 2008中,您可以定义可以启动脚本或小程序的预构建事件。在此脚本或程序中,您可以使用 svnversion 命令获取存储库修订,然后解析AssemblyInfo.cs并将版本号修改为您想要的版本号。
我不确定TortoiseSVN是否带有svnversion,但它确实附带了 Windows由CollabNet提供的SVN构建
我为 SVN版本插件 .codeplex.com /“rel =”nofollow noreferrer“>构建版本增量项目(以popester的答案命名)。此SVN插件将从您的工作副本中提取最新的更改修订版号,并允许您在您的版本号中使用它,这应该完全符合您的要求。