2009-06-10 63 views
18

我有一個使用CruiseControl的自動化構建系統。我正在使用SvnRevisionLabeller來獲取要使用的版本字符串。有了這個字符串,我可以使用nant來更新AssemblyInfo.cs,所以當我構建它時有正確的構建字符串。我也可以使用這個CC標籤來標記Subversion版本庫。AssemblyInfo.cs應該放置在版本控制中嗎?

所以一切都是對準
- CCNET構建標籤
- 可執行文件(程序集信息)
- 版本控制(subverson標籤)

現在,我有一個問題是,如果我想嘗試重建一個來自存儲庫的舊圖像。由於AssemblyInfo.cs不受版本控制,而是生成的文件,因此當我現在嘗試構建時,版本信息將與使用CruiseControl構建此版本的存儲庫時不同。我希望能夠生成完全相同的圖像,無論它是在CC構建期間生成的,還是在以後從Subversion簽出時生成的。

我知道它通常不被推薦,但是我應該在每次構建之後簽入assemblyInfo.cs文件,以便在隨後從svn checkout構建時使用正確的版本信息?

感謝, 利亞姆

回答

2

我總是有它的檢查。事實上,我相信這是團隊系統源代碼控制的默認行爲。

+0

我使用的是Subversion和CrusieControl.NET。我使用NAnt腳本構建。我讀過的是AssemblyInfo.cs是在構建過程中生成的輸出。所以構建順序是: - CCNET(SVN觸發由登記入住@say存儲庫版本100) 楠稱爲是afgter構建 我現在辦理登機手續的AssemblyInfo.cs創建 的MSBuild叫 的AssemblyInfo.cs ?如果簽到,版本庫將在版本101.所以我的目標是使AssemblyInfo.cs與構建版本匹配不符合。我該怎麼做呢? – 2009-06-11 21:59:35

7

要麼根本沒有AssemblyInfo.cs的版本,要麼把它們的「開發版本」放到版本庫中,讓CruiseControl.Net在版本建立之後svn-恢復它們(我做了後面的版本,這樣開發者工作站上的版本是從CruiseControl.Net下載的「官方」軟件很容易關閉)。

對於以後再生成相同的構建標籤 - 您必須手動調用MSBuild/NAnt來重建,只需傳遞給它CCNetLabel設置爲合適的值,您將獲得與生成相同的程序集版本構建從CruiseControl.Net調用(MSBuild:/p:CCNetLabel=1.4.2.333,NAnt:-D:CCNetLabel=1.4.2.333)。

7

我使用了一個CommonAssemblyInfo.cs文件,我在每個項目中添加了一個鏈接。

我在這個文件中唯一的屬性是AssemblyFileVersion並且CC.Net/Msbuild更新每個版本的版本。

確保包含CommonAssemblyInfo.cs的任何項目在AssemblyInfo.cs中都沒有重複的屬性。

如果您查看CC.Net源代碼,您將看到它們是如何配置它們的。

0

我們有一個MSBuild腳本,在構建之前生成所有需要的AssemblyInfo.cs文件。這樣我也可以在程序集版本中使用SVN修訂號。 AssemblyInfo.cs文件沒有被檢入到SVN中(它們被忽略以免打擾人們),而是在構建之前生成(不管它是自動構建腳本還是VS)。

我還提供了一個批處理文件來照顧AssemblyInfo.cs文件的生成,以便開發人員不需要打擾細節。

相關問題