Team Build 與 自訂輸出路徑
前言 - 自訂輸出路徑
像 NopCommerce 這種有一堆的Plug-in 的專案或是有自已專屬的設定檔都代表在自動化部署時需要額外管理以及設定
Output 輸出路徑看似沒有什麼太大的問題,但對於自動化建置來說就可不是這麼一回事
Team Build 的建置機制
因為 Team Build 會自動攔截所有編譯的項目並複製到 Bin ,所以原本期望是依照每一個目錄一個一個放到,透過 Team Build 的話就會是混雜一坨地放在 bin 目錄下。更重要的是,原本是要放在 Web 的路徑下,現在卻變成放在 Bin 之下。
就算在 Team Build 腳本之中使用了 Solution Specific Build Outputs 改成 True 也是一樣會在 Bin 目錄之中
/p:GenerateProjectSpecificOutputFolder=true
嘗試了各種不同的設定和組合,但這些做法都不適合 NopCommerce 的專案形式
建議的做法
基本上這種外掛套件都會需要集中式管理,並且確定產出的版本都有經過版控管理。因為我們無法確定新版的plug in 套件是否會對所有的專案受到影響,需要逐一地確認 interface 或是 相關功能是否正常運作。
因此,最直覺也是最簡單的做法就是直接將 plug-in 的套件納入版本管控之中。並將 Plugin 的那些專案和 web 的部分隔離開來
一來我們不需要重新編譯這些元件,二來 dll 元件的位置統一不需要再做額外的設定。
什麼?想要想 plugin 的專案也要納入自動化部署的項目?可以考慮在 Team Build 中搭配 PowerShell 的語法來自行將 plugins 底下的檔案再搬到 publish web 的目錄之中即可
http://msdn.microsoft.com/en-us/library/dd647547.aspx
http://msdn.microsoft.com/en-us/library/ms171468(v=vs.110).aspx
http://blog.stangroome.com/2014/02/10/override-the-tfs-team-build-outdir-property-in-tfs-2013/
http://vijayskotecha.blogspot.tw/2012/08/tfs-2010-custom-build-output-directory.html
http://blog.stangroome.com/2012/05/10/override-the-tfs-team-build-outdir-property-net-4-5/