工作環境用的是 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 資料夾,這個路徑稍後會用到。
![](http://www.darkthread.net/Photos/3862-6256-o.gif)
建置定義編輯畫面的 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 專案選擇適用範本。
![](http://www.darkthread.net/Photos/3863-5a03-o.gif)
其實 DefaultTemplate.11.1.xaml 只要小改路徑設定就可以編譯 VS2015 專案,我複製一份並改名為 DefaultTemplate.VS2015.xaml 放在 BuildProcessTemplates 目錄下,點擊兩下即可使用 Visual Studio 修改流程。在流程圖中找到「對專案執行MSBuild」:
![](http://www.darkthread.net/Photos/3864-9e8e-o.gif)
開啟其屬性設定找到 ToolPath 項目填入我們安裝 MS Build Tools 2015 的路徑:"C:\Program Files (x86)\MSBuild\14.0\Bin":
![](http://www.darkthread.net/Photos/3866-2ddb-o.gif)
此處有個眉角-XAML 裡還有另一個「對專案執行MSBuild」,也要修改:
![](http://www.darkthread.net/Photos/3865-8b8a-o.gif)
將 XAML 存檔並簽入 TFS,接著將建置定義的建置範本換成 DefaultTemplate.VS2015.xaml(若它不在下拉選單中,請使用 New 選取加入)重新執行建置,就可以在 TFS 2012 Build Service 成功編譯 VS2015 專案囉~