AssemblyInfo.cs subversion和TortoiseSVN

时间:2009-10-25 18:36:37

标签: c# svn tortoisesvn assemblyinfo

我正在使用TortoiseSVN和Visual Studio 2008。 有没有办法在每个构建中用svn的版本更新我的项目的assemblyinfo.cs?

例如,1.0.0。[svn的版本] - > 1.0.0.12

7 个答案:

答案 0 :(得分:13)

您可以使用TortoiseSVN附带的SubWCRev工具(也可单独购买)。

从命令行运行它或使用它提供的COM-Object

文件中的SubWCRev命令行工具replaces keywords,其中包含来自svn工作副本的信息。文档中显示example

答案 1 :(得分:7)

我在build script中执行此操作:

<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' />

使用community build tasks。这基本上将正则表达式应用于AssemblyInfo.cs,用svn修订版替换当前版本。

答案 2 :(得分:3)

您可以使用$Rev$ svn keyword,但这会为您提供该文件的最新修订版本,我想您希望获得HEAD版本号。

看看这个问题:

答案 3 :(得分:2)

您对Visual Studio addin的看法感觉如何?

答案 4 :(得分:2)

是的,您可以添加一个调用脚本

的预构建事件
  • 调用svn info以提取当前版本号(如果您之前进行了更新,则可以直接在文件中包含关键字$Revision$,另请查看this post);
  • 相应地修改您的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,它会使用关键字替换来转换文件,因此如果您更新本地副本,它就可以解决问题。

答案 5 :(得分:1)

在Visual Studio 2008中,您可以定义可以启动脚本或小程序的预构建事件。在此脚本或程序中,您可以使用 svnversion 命令获取存储库修订,然后解析AssemblyInfo.cs并将版本号修改为您想要的版本号。

我不确定TortoiseSVN是否带有svnversion,但它确实带有Windows SVN build provided by CollabNet

答案 6 :(得分:0)

我为SVN version plug-in创建了Build Version Increment project(以popester的答案命名)。此SVN插件将从您的工作副本中提取最新的更改修订版号,并允许您在您的版本号中使用它,这应该完全符合您的要求。