2010-03-09 70 views
5


我在Visual Studio 2008中構建了一個包含多個項目和項目依賴關係的C#解決方案。
我正在尋找一種方法來更改dll版本號只有當生成項目的代碼更改。

我目前使用Beyond Compare將我的本地生成版本與生產文件系統進行比較。目標是僅部署更新的dll。我正在使用自動增量版本號,並且每次打開visual studio並進行構建時,所有dll版本號都會增加。完全解決方案重建以及不同開發人員構建並嘗試部署時也是如此。

有沒有一種方法可以將Visual Studio配置爲僅基於更改的文件內容增加內部版本號?有沒有添加會做到這一點?

似乎這些文件的二進制比較也會失敗,因爲dll中的版本號不同。有誰知道更好的工具只比較dll的內容?

在此先感謝。如何在Visual Studio中配置內部版本號以啓用dll比較

回答

1

一種選擇是轉向持續集成解決方案,如Cruise Control .Net,這允許在簽入源控制系統時觸發構建。

關於集版本我通常做的是什麼創造一個SolutionVersion.cs(替換默認的程序集版本CS)鏈接到每個項目(使用添加現有項目,但改變按鈕添加爲鏈接)

然後我用一個惡性或MSBuild任務採取巡航控制生成的標籤數量和覆蓋SolutionVersion.cs verison號之前解決方案被內置

這樣我可以採取裝配,並通過跟蹤它回到代碼CruiseControl構建版本(甚至更好,我通常會在源代碼管理中使用相同的編號標記源代碼)

+0

ccnet的+1。對於彙編版本,我們使用subversion版本號。對於安裝程序,我們有需要強制構建的ccnet項目,因此安裝程序基於ccnet內部版本號進行版本控制。 – Pedro 2010-05-25 14:58:25

+0

你說得對,建立服務器這樣做是最好的選擇。鏈接的版本文件可以在那裏獲得大部分內容,但如果您使用內部版本號,則每個版本都會隨着每個版本而改變。在大多數情況下,使用來自源代碼控制的rev數似乎更加複雜,然後在特定項目中使用最新rev數的唯一文件會更復雜。 – jaminto 2012-10-06 16:19:13

+0

我放棄了只更新dll的部分部署的要求,從新的構建部署所有dll都很好,並且所有dll都會根據內部版本號更新版本號。 http://www.jetbrains.com/teamcity/是我現在選擇的構建服務器,也可能是你的。 – jaminto 2012-10-06 16:19:42

0

它不太符合你的要求,但我發現這對處理大型解決方案很有幫助:Versioning Controlled Build。根據其文檔,它檢測到您感興趣的更改: 「如果存在具有更新近時間戳的文件(這意味着源代碼在先前版本更改後已被修改),則該項目將被標記爲版本更新「。

推薦的,可支持的解決方案將用於您的項目不使用Visual Studio方式自動增加內部版本號。然後,您需要手動或編寫預生成腳本/ MS生成任務來執行增量。

0

有這codeproject article一個有趣的樣本,你應該看看......它涉及到一個預生成的任務,確實根據的一年中的天更新版本號的任務

0

我會建議您可以查看您的修訂控制系統提供的選項,以將修訂信息嵌入到源文件中。過去我對自動增量有足夠的問題,我不會再次答應自己。現在我更喜歡比構建編號更具體的東西,並將獨特的標識符嵌入構建系統的每個產品中。

我在Embedding mercurial revision information in Visual Studio c# projects automatically中描述了我自己的系統。儘管我的解決方案可能不適合您,但在回答我的問題時還提出了其他有趣的選項,因此,我拒絕的一些解決方案可能對您有用,即使您必須將它們適用於任何VCS使用。

相關問題