2009-10-25 64 views
17

我正在使用TortoiseSVN和Visual Studio 2008. 有没有什么方法可以在每个版本中用svn的版本更新我的项目的assemblyinfo.cs? 。AssemblyInfo.cs subversion和TortoiseSVN

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

+0

“我的项目的颠覆”,你是不是指“我的项目的assemblyinfo.cs”?否则,这句话对我来说毫无意义。 – chiccodoro 2010-08-18 09:33:09

回答

13

你可以(单独提供)使用SubWCRev工具附带TortoiseSVN的。

要么从命令行运行它,要么使用它提供的COM-Object

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

+5

但是,如果修改了AssembyInfo.cs,它会作为修改出现在工作副本中。如果您提交并重建,则会再次更改。如何在不修改受源代码控制的文件的情况下做到这一点? – 2010-03-11 14:34:18

+0

@Assaf:这就是为什么不应该检查AssemblyInfo.cs文件是否会自动生成。 – chiccodoro 2010-08-18 09:30:02

+0

@chiccodoro,我想你错过了我的问题。部分版本字符串保持不变,部分是自动生成的(最后一个数字)。 – 2010-08-20 12:33:31

2

如何你觉得一个Visual Studio addin做什么呢?

+0

嘿,不知道这个,看起来很有趣。 – RedGlyph 2009-10-25 18:48:04

+0

看起来不像外挂程序允许使用Subversion版本号作为值。 – 2009-10-25 18:50:39

+0

我为Build Version Increment项目创建了一个SVN版插件(http://happyturtle.codeplex.com/)。这个SVN插件将从工作副本中提取最新的更改版本号,并允许您在版本号中使用该版本号,该版本号应该完成您正在尝试执行的操作。 – grimus 2010-04-12 01:21:38

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,它可以转换一个带有关键字替换的文件,所以如果你更新你的本地副本,它会有效果。

1

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

我不知道,如果TortoiseSVN的附带svnversion,如果,但它确实来与Windows SVN build provided by CollabNet

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修订版替换当前修订版。

+0

任何方式来使用这些生成任务而不安装它们?换句话说,是否有可能让他们与源代码一起版本化,以便开发人员不必知道他们或担心安装它们? – jpierson 2010-09-17 01:39:13

+0

@jpierson - 我真的没有尝试过,所以我不知道 – 2010-09-17 05:37:17

+1

是的,这是可能的。你必须有dll版本(你会在这里找到代码:http://msbuildtasks.tigris.org/),并写下如下一行:。你将不得不为你想要使用的每个任务写一行。 – 2010-09-23 14:32:11

0

我为Build Version Increment project创建了一个SVN version plug-in(在popester的回答中命名)。这个SVN插件将从工作副本中提取最新的更改版本号,并允许您在版本号中使用该版本号,该版本号应该完成您正在尝试执行的操作。

相关问题