我正在使用TortoiseSVN和Visual Studio 2008. 有没有什么方法可以在每个版本中用svn的版本更新我的项目的assemblyinfo.cs? 。AssemblyInfo.cs subversion和TortoiseSVN
例如,1.0.0 [SVN的版本] - > 1.0.0.12
我正在使用TortoiseSVN和Visual Studio 2008. 有没有什么方法可以在每个版本中用svn的版本更新我的项目的assemblyinfo.cs? 。AssemblyInfo.cs subversion和TortoiseSVN
例如,1.0.0 [SVN的版本] - > 1.0.0.12
你可以(单独提供)使用SubWCRev工具附带TortoiseSVN的。
要么从命令行运行它,要么使用它提供的COM-Object。
SubWCRev命令行工具replaces keywords包含来自svn工作副本的信息。文档中显示了example。
但是,如果修改了AssembyInfo.cs,它会作为修改出现在工作副本中。如果您提交并重建,则会再次更改。如何在不修改受源代码控制的文件的情况下做到这一点? – 2010-03-11 14:34:18
@Assaf:这就是为什么不应该检查AssemblyInfo.cs文件是否会自动生成。 – chiccodoro 2010-08-18 09:30:02
@chiccodoro,我想你错过了我的问题。部分版本字符串保持不变,部分是自动生成的(最后一个数字)。 – 2010-08-20 12:33:31
如何你觉得一个Visual Studio addin做什么呢?
是的,你可以添加一个调用脚本
svn info
提取当前版本号这(如果你之前做一个更新,您可以直接包含关键字$Revision$
在一个预生成事件文件,也检查this post);我通常做的是在构建项目时转换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 SVN build provided by CollabNet
您可以使用$Rev$
svn keyword但会给你的文件的最后修改,我想你想获得HEAD
版本号。
给看看这个问题:
我这样做,我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修订版替换当前修订版。
任何方式来使用这些生成任务而不安装它们?换句话说,是否有可能让他们与源代码一起版本化,以便开发人员不必知道他们或担心安装它们? – jpierson 2010-09-17 01:39:13
@jpierson - 我真的没有尝试过,所以我不知道 – 2010-09-17 05:37:17
是的,这是可能的。你必须有dll版本(你会在这里找到代码:http://msbuildtasks.tigris.org/),并写下如下一行:
我为Build Version Increment project创建了一个SVN version plug-in(在popester的回答中命名)。这个SVN插件将从工作副本中提取最新的更改版本号,并允许您在版本号中使用该版本号,该版本号应该完成您正在尝试执行的操作。
“我的项目的颠覆”,你是不是指“我的项目的assemblyinfo.cs”?否则,这句话对我来说毫无意义。 – chiccodoro 2010-08-18 09:33:09