2009-10-25 89 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插件將從工作副本中提取最新的更改版本號,並允許您在版本號中使用該版本號,該版本號應該完成您正在嘗試執行的操作。

相關問題