我在Visual Studio 2008中構建了一個包含多個項目和項目依賴關係的C#解決方案。
我正在尋找一種方法來更改dll版本號只有當生成項目的代碼更改。
我目前使用Beyond Compare將我的本地生成版本與生產文件系統進行比較。目標是僅部署更新的dll。我正在使用自動增量版本號,並且每次打開visual studio並進行構建時,所有dll版本號都會增加。完全解決方案重建以及不同開發人員構建並嘗試部署時也是如此。
有沒有一種方法可以將Visual Studio配置爲僅基於更改的文件內容增加內部版本號?有沒有添加會做到這一點?
似乎這些文件的二進制比較也會失敗,因爲dll中的版本號不同。有誰知道更好的工具只比較dll的內容?
在此先感謝。如何在Visual Studio中配置內部版本號以啓用dll比較
回答
一種選擇是轉向持續集成解決方案,如Cruise Control .Net,這允許在簽入源控制系統時觸發構建。
關於集版本我通常做的是什麼創造一個SolutionVersion.cs(替換默認的程序集版本CS)鏈接到每個項目(使用添加現有項目,但改變按鈕添加爲鏈接)
然後我用一個惡性或MSBuild任務採取巡航控制生成的標籤數量和覆蓋SolutionVersion.cs verison號之前解決方案被內置
這樣我可以採取裝配,並通過跟蹤它回到代碼CruiseControl構建版本(甚至更好,我通常會在源代碼管理中使用相同的編號標記源代碼)
它不太符合你的要求,但我發現這對處理大型解決方案很有幫助:Versioning Controlled Build。根據其文檔,它檢測到您感興趣的更改: 「如果存在具有更新近時間戳的文件(這意味着源代碼在先前版本更改後已被修改),則該項目將被標記爲版本更新「。
推薦的,可支持的解決方案將用於您的項目不使用Visual Studio方式自動增加內部版本號。然後,您需要手動或編寫預生成腳本/ MS生成任務來執行增量。
有這codeproject article一個有趣的樣本,你應該看看......它涉及到一個預生成的任務,確實根據的一年中的天更新版本號的任務
我會建議您可以查看您的修訂控制系統提供的選項,以將修訂信息嵌入到源文件中。過去我對自動增量有足夠的問題,我不會再次答應自己。現在我更喜歡比構建編號更具體的東西,並將獨特的標識符嵌入構建系統的每個產品中。
我在Embedding mercurial revision information in Visual Studio c# projects automatically中描述了我自己的系統。儘管我的解決方案可能不適合您,但在回答我的問題時還提出了其他有趣的選項,因此,我拒絕的一些解決方案可能對您有用,即使您必須將它們適用於任何VCS使用。
- 1. 如何配置Visual Studio以使用超越TFS GIT比較?
- 2. 在Visual Studio 2008中將內部版本號/內部版本號嵌入到項目中
- 3. 如何在Visual Studio中設置Subversion修訂版本編號
- 4. 如何在Visual Studio中使用最新版本更新DLL
- 5. 如何在Visual C++ 2008中自動增加內部版本號?
- 6. 如何比較任意版本號?
- 7. 如何比較Ansible中的內核(或其他)版本號
- 8. 我可以更改默認的內部版本號在Visual Studio 2008
- 9. 使用較舊版本的MFC和較新版本的Visual Studio
- 10. DLL重定向 - 內部版本號不匹配
- 11. 使用PowerShell腳本替換DLL版本信息中的內部版本號
- 12. 如何比較版本號的字符串內?
- 13. ASP.Net版本號/內部版本號
- 14. 如何在Visual Studio 2015社區版中啓用InstallShield限定版
- 15. 配置Visual Studio Team Services以部署WebJobs
- 16. 使Visual Studio不關心DLL版本
- 17. 如何配置visual studio 2017以使用外部difftool和mergetool
- 18. yum比較版本如何?
- 19. 在Visual Studio 2010中引用非GAC版本的DLL
- 20. 可以在Visual Studio Mac中使用DLL
- 21. 如果我用較新的visual studio版本打開了一個visual studio項目,我可以用較舊的visual studio版本再次打開它嗎?
- 22. 在Visual Studio中自動包含文件名中的DLL版本號
- 23. 版本比較
- 24. 如何配置Visual Studio以在本地IIS上查看net.tcp URL?
- 25. 在Visual Studio中啓用行號顯示
- 26. Visual Studio 2010數據庫版本模式比較目標是dbproj
- 27. Microsoft Git Provider和Visual Studio 2012未能啓動已配置的比較工具
- 28. 引用dll時忽略內部版本號
- 29. 將'release'配置的當前內部版本號設置爲'nightly build'配置?
- 30. iTunes Connect的內部版本號重置
ccnet的+1。對於彙編版本,我們使用subversion版本號。對於安裝程序,我們有需要強制構建的ccnet項目,因此安裝程序基於ccnet內部版本號進行版本控制。 – Pedro 2010-05-25 14:58:25
你說得對,建立服務器這樣做是最好的選擇。鏈接的版本文件可以在那裏獲得大部分內容,但如果您使用內部版本號,則每個版本都會隨着每個版本而改變。在大多數情況下,使用來自源代碼控制的rev數似乎更加複雜,然後在特定項目中使用最新rev數的唯一文件會更復雜。 – jaminto 2012-10-06 16:19:13
我放棄了只更新dll的部分部署的要求,從新的構建部署所有dll都很好,並且所有dll都會根據內部版本號更新版本號。 http://www.jetbrains.com/teamcity/是我現在選擇的構建服務器,也可能是你的。 – jaminto 2012-10-06 16:19:42