工作環境用的是 TFS 2012 Build Service,最近要編譯 VS2015 專案,程式用到 C# 6.0 超好用的字串插值寫法當場被打臉,得到 Unexpected character '$' 錯誤。原因很明顯,VS2015 改用 Roslym 編譯器,TFS 2012 Build Service 上沒裝是要編個屁?
經過一番摸索(還學到 TFS 的編譯範本原理)終於搞定,細節整理如下。
首先要下載 MS Build Tools 2015安裝到 Build Service 主機。(安裝完整 VS2015 應該也成,但有殺雞用牛刀之嫌)
安裝完畢 Program Files (x86) 目錄會多出 14.0 資料夾,這個路徑稍後會用到。
建置定義編輯畫面的 Process 區有個 Build process template 項目,預設是收合的,打開可以目前使用 Default Template (DefaultTempalte.11.1.xaml),而它位於 TFS 版控該專案的 BuildProcessTemplates 資料夾(每次建立 TFS 專案都會看到系統自動產生 BuildProcessTemplates 目錄,至今才明白它的用意)。這個 XAML 檔是一套 Windows Workflow 流程,最棒的是可直接用 Visual Studio 視覺化編輯。由於 DefaultTemplate.11.1.xaml 適用 VS2012/VS2013,需要修改才能用於 VS2015 專案。修改此範本使用其支援 VS2015 是種解法,而更好的做法是另外新增一個 VS2015 專用的建置範本,二者並存,未來再視 VS2013 或 VS2015 專案選擇適用範本。
其實 DefaultTemplate.11.1.xaml 只要小改路徑設定就可以編譯 VS2015 專案,我複製一份並改名為 DefaultTemplate.VS2015.xaml 放在 BuildProcessTemplates 目錄下,點擊兩下即可使用 Visual Studio 修改流程。在流程圖中找到「對專案執行MSBuild」:
開啟其屬性設定找到 ToolPath 項目填入我們安裝 MS Build Tools 2015 的路徑:"C:\Program Files (x86)\MSBuild\14.0\Bin":
此處有個眉角-XAML 裡還有另一個「對專案執行MSBuild」,也要修改:
將 XAML 存檔並簽入 TFS,接著將建置定義的建置範本換成 DefaultTemplate.VS2015.xaml(若它不在下拉選單中,請使用 New 選取加入)重新執行建置,就可以在 TFS 2012 Build Service 成功編譯 VS2015 專案囉~