我一直對我的持續集成項目,這是獲得TeamCity建立我的應用程序時,自動更改所有組件的版本號,然後創建一個安裝程序的下一步。需要的TeamCity +維克斯+的MSBuild工作流程的建議
首先給出一些背景:
我一直在運行TeamCity的成功,在過去的幾個月裏,和它建立我的配置和運行我的NUnit和NCover測試就好了。
我花了一點時間研究安裝程序 - 我一直恨InstallShield和從未考慮過爲我的當前應用程序。我喜歡NSIS,但碰巧遇到了WiX。我對MS Installer體系結構沒有任何深入的瞭解,我知道這對於複雜的項目很危險,所以在某些時候我需要了解更多。然而,在涉及SO問題,搜索網頁和閱讀博客幾天後,我有一個成功構建,安裝,運行應用程序並清除所有內容的WiX項目。大!
我也想有TeamCity的構建配置自動更新所有的我的程序集的版本號。我可以通過在我的開發機器上安裝MSBuild Community Tasks並創建一個使用BeforeBuild目標和FileUpdate任務來更改版本號的部署配置來模擬此功能。這工作正常,除了在我的開發機器上,我沒有build_vcs_number_1環境變量來替代。
所以這就是現在的我 - 我需要做的TeamCity更新,而它確實有build_vcs_number_1環境變量,我無法弄清楚如何在維克斯的MSBuild社區任務獲得。
一個職位,我讀推薦的MSBuild的目標檢查到SVN文件夾。我有這樣的事情的/ EXTLIB文件夾,所以我的TeamCity VCS結算規則是這個樣子:
+:tags/2010-10-15=>src
+:extlib=>extlib
我如何從一個環境變量EXTLIB?當我運行構建時,TeamCity抱怨(並正確如此)以至於找不到c:\wix30\MSBuildCommunityTasks
。實際的文件夾是C:\TeamCity\buildAgent\work\3e073d2b74226378\extlib\wix30\MSBuildCommunityTasks
。該文件夾是自動生成的,因爲我正在執行服務器端檢出,所以必須有一些TeamCity設置的可用於獲取正確路徑的環境變量。
我應該注意的一件事是,我已經進入了構建配置 - >屬性和環境變量,並找到了所有現有變量的直觀下拉列表,並沒有看到任何聽起來像變量指向工作路徑。
我能想到的一種可能的解決方法是隻在生成服務器上安裝MSBuild社區任務,然後我可以創建一個可由<WixToolPath>
訪問的系統環境變量。
有沒有人有其他建議?
我只是想知道你是否仍然以這種方式工作。我曾經在創建這個問題的同一時間做類似的事情,但後來Git和NuGet,我慢慢遷移到使用NuGet作爲我的主要依賴管理方式。 TeamCity當然現在有一個AssemblyInfo補丁程序,並且在下一個版本中,它使它能夠完成MSBuild社區任務所能做的一切。 – 2015-06-24 10:22:54
我仍然以這種方式工作,對我來說它仍然是一個很好的解決方案,但隨着我獲得更多帶寬,我一定會考慮更改。我想離開MSBuild社區任務,因爲我必須修改每個新程序集,這很不方便。 – Dave 2015-06-24 12:11:50