我正在使用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