AssemblyInfo.cs subversion和TortoiseSVN

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

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

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

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

SubWCRev命令行工具使用 svn工作副本中的信息替换文件中的关键字 。 文档中显示了一个示例 。

我在构建脚本中执行此操作:

    

使用社区构建任务 。 这基本上将正则表达式应用于AssemblyInfo.cs,用svn修订版替换当前版本。

您可以使用$Rev$ svn关键字,但这将为您提供该文件的最新修订版本,我想您想获得HEAD修订版号。

看看这个问题:

  • 如何将SVN修订号与我的ASP.NET网站同步?

您对Visual Studio 插件的感觉如何?

是的,您可以添加一个调用脚本的预构建事件

  • 调用svn info来提取当前的版本号(如果你之前做过更新,你可以直接在文件中包含关键字$Revision$ ,也可以查看这篇文章 );
  • 相应地修改您的Properties \ AssemblyInfo.cs文件。

我通常做的是在构建项目时转换AssemblyInfo.cs模板。 不幸的是,该脚本必须使$ Revision $的forms适应该文件的语法。

有趣的属性是(模板字符串在’$’之间):

 [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,但它确实附带了CollabNet提供的Windows SVN构建

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