[Memo]自動化建置的 VisualStudioVersion 出現錯誤的版本

[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> 宣告中的路徑正確,而且檔案存在於磁碟上。

 

image

 

image

 

重新確認一下發現 project 的編譯位置抓錯了版本,而且 v11.0 的位置根本沒有 WebApplication.targets 的檔案

 

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications

image

 

解決

基本上不建議直接在 project 檔中將版號定死,而且還要每個 project 檔都要修改實在累死人。

而寫死以後若是要升級更是麻煩。

 

而這個地方之所以會錯完全是因為開發工具本來就會指定版號,而 MSBuild 在編譯時不知應該要用那個版本,所以需要特別指定避免系統去抓到舊的版本。

image

 

最簡單的做法就是直接在 Team Build 中的 MSBuild 引數中加上 「/p:VisualStudioVersion=12.0」就可以引用正確的路徑位置了

image

 

http://blogs.msdn.com/b/webdev/archive/2012/08/22/visual-studio-project-compatability-and-visualstudioversion.aspx