2010-07-28 254 views
7

我有一個使用顛覆源控制的asp.net/C#應用。內部版本VS版本號

我的應用程序會自動增加它的AssembleVersion和的AssemblyFileVersion上用得好好的每個版本,並顯示在網站的管理方面的內部版本號。

我們在進行部署時跟蹤了AssembleVersion和AssemblyFileVersion,但是當出現問題並且需要回滾到某個特定版本時,我們不知道在Subversion中針對哪個版本。

我有幾點想法:

  1. 保存AssembleVersion在每個文件註釋
  2. 有一個關鍵字在提交該得到的取代AssembleVersion每次提交(仍需要弄清楚如何做到這一點)評論

任何幫助和建議,可以理解

更新時間: 選項「1」實際上是一個愚蠢的想法,因爲這將意味着我每次構建時,所有文件都將被標記爲已更新,當我提交時,每個文件都將被更新

+0

好像每個人都指向「標籤」。任何想法,我可以得到一個關於標籤的教程?以及如何創建它們? ***我從來沒有聽說過標籤*** – 2010-07-28 11:13:45

+0

請參閱我提供的鏈接。 :) – 2010-07-28 11:17:12

回答

4

當我建,我把版本號無處不在。

  • 我把它放在svn中的tag
  • 我把它放在我構建的每個程序集的程序集元數據中。
  • 我將它追加到我的安裝程序文件名的末尾。
  • 我把它放在我的每一個部署網頁頁腳。
  • 我把它放在我的報告的頁腳中。
  • 我把它放在我的客戶端應用程序的啓動畫面中。
  • 我把它放在我的安裝程序的歡迎屏幕上。

我不把它放在裏面的唯一東西就是我的咖啡,它是I take black

所有這些都可以讓維護人員一目瞭然地知道代碼來自哪裏,他們正在查看的內容,他們是在查看網頁,還是在資源管理器中查看其中一個構建程序集的屬性,或者隨你。

+0

是啊...這是我正在努力,只是不知道如何創建標籤雖然:( – 2010-07-28 11:16:12

+0

所有你必須做的使用「svn copy」命令,並且會在你想要的任何地方創建一個標籤,所有標籤都是一個「副本」,它在Subversion中被實現爲一個「指針」,你可以在你的構建文件中執行這個命令,例如,CruiseControl只是通過正確配置你的項目來爲你製作這個標籤 – 2010-07-28 11:38:51

+2

對不起,我不同意不把它放在你的咖啡中,你還有什麼想知道它是從剩下的前一天? – 2010-07-28 12:37:27

4
+0

也許我應該抓顛覆,導致即使閱讀「簡單」和「複雜」的例子後,我仍然不知道從哪裏開始的標籤 – 2010-07-28 11:24:08

+0

我認爲這取決於你如何使用顛覆,是你使用類似烏龜SVN或命令行的東西,書中的示例是使用命令行工具的示例。如果你想刷新http://svnbook.red-bean.com/ – 2010-07-28 13:51:55

+0

是的,我推薦看看本書的其餘部分,我使用gui工具如烏龜和安赫,我從來沒有使用命令行(純粹因爲我沒有必要),但我現在正在做一些閱讀:) – 2010-07-29 05:52:41

2

你可以標記與AssembleVersion或的AssemblyFileVersion,取其最有意義的顛覆樹幹。

您還可以跟蹤的Subversion版本號,你目前跟蹤,當您部署AssembleVersion和的AssemblyFileVersion以同樣的方式。

2

應用一個標籤源代碼樹已經更新了AssemblyVersionAssemblyFileVersion後。

2

你可以「分支發佈」。在創建發佈版本之前,您可以分支主幹,然後在發佈版本號的新分支上創建一個標籤。

   + release tag 
      /
      +--------------------- release branch 
     / 
----------+----------------------------------------------------- trunk 

這將讓你保持在SVN所有單個版本的軌道。它還將允許您在發佈分支上進行單獨的錯誤修復,這些修復可以作爲補丁發佈。然後可以將錯誤修復合併回主幹。

   +     + patch release tag 
      /    /
      +-----------------+-+---- release branch 
     /     | merged fix into trunk... 
----------+----------------------------------------------------- trunk 
3

如果您經常構建標籤,標籤並不真正有用。也許找到一種方法來更新基於svn修訂版的Assembly版本呢?還包括分支名稱,因爲它們共享修訂。

而且您應該能夠在ASP.NET頁面中提取程序集版本並以程序化方式將其打印在頁腳中。

+0

我設法使用http://sharpsvn.open.collab.net/(SharpSVN)從svn獲得修訂號,但是這會產生一些痛苦......爲什麼?!?....好吧,什麼時候準確你是否告訴它檢查版本,並在哪裏保存它? – 2010-07-28 11:45:41

+0

Tehre是一個名爲AssemblyInfoTask的自定義任務,它在構建時更新assemblyversion,因此您可以使用類似的任務。但是,它可能需要進行一些調整才能得到實際的修訂版本號。我自己並沒有使用這個版本,因爲我們採用了更簡單的解決方案,導出了包含在網站中的版本號的文本文件,只是爲了給我們提示。缺點是我們無法在我們的dll上看到版本號 – jishi 2010-07-29 08:41:52

2

標籤/分支絕對是這裏推薦的方法。

您還可以(或者另外)在您的AssemblyInfo中包含svn版本號。一種方法是在http://msbuildtasks.tigris.org

欲瞭解更多信息使用的AssemblyInfo任務從msbuildtasks項目,谷歌msbuild svn revision assemblyinfo

可以然後做沒有標籤/枝,因爲你總是可以簽出特定修訂, /或從特定版本創建分支。

0

另一種選擇是使用上次更改的版本作爲版本號。這意味着您每次構建自動標記。使用hudson/jenkins很容易,因爲你有一個環境變量SVN_REVISION。問題在於版本號變得非常大,關於1.0.0.20456和1.0.0.20489的走廊討論是滿口的。