[Memo]自動化建置的 VisualStudioVersion 出現錯誤的版本
問題
最近有很多機會做自動化建置,其中有一個問題花了很多的時間。
開發環境是用 VS 2013 、建置伺服器為 TFS 2013
使用開發工具直接編譯或是用 TFS 2013 Teem Build 來做都很正常
但改用 Relase Management Build 定義範本時卻出現了以下的錯誤
找不到匯入的專案 "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets"。請確認 <Import> 宣告中的路徑正確,而且檔案存在於磁碟上。
重新確認一下發現 project 的編譯位置抓錯了版本,而且 v11.0 的位置根本沒有 WebApplication.targets 的檔案
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications
解決
基本上不建議直接在 project 檔中將版號定死,而且還要每個 project 檔都要修改實在累死人。
而寫死以後若是要升級更是麻煩。
而這個地方之所以會錯完全是因為開發工具本來就會指定版號,而 MSBuild 在編譯時不知應該要用那個版本,所以需要特別指定避免系統去抓到舊的版本。
最簡單的做法就是直接在 Team Build 中的 MSBuild 引數中加上 「/p:VisualStudioVersion=12.0」就可以引用正確的路徑位置了