[C#] MsBuild 與 Devenv的差異之處
前言
最近在測試將一個使用MapInfo的專案整合到TeamCity的自動化建置系統,
卻發生了使用MsBuild無法建置的狀況,產生了下列錯誤
ASPNETCOMPILER error ASPCONFIG: 找不到指定的模組。 (發生例外狀況於 HRESULT: 0x8007007E
但如果是用Visual Studio 2008進行建置卻是正常沒有問題的,
比較疑惑的是使用兩者進行建置的結果似乎不盡相同!?
差別比較
上網查了一下資料,在Srikanth R的文章找到瞭解釋,
通常在一般的情況之下,
開發者會使用Devenv (也就是Visual Studio)來進行建置,
而Build Machine則會使用Msbuild來建置,
Devenv會使用Msbuild來建置專案,
但Msbuild並不能建置Visual C++的專案,
所以當MsBuild發現Solution中包含VC++的專案時,
它會使用Vcbuild來建置,這個行為在Devenv中是相同的。
所以如果是C++的專案,將不會呼叫Msbuild,
Devenv使用Msbuild來建置C#和VB的專案,
但遇到C++專案時,會使用Vcbuild來建置。
在Visual Studio 2010的版本中,
已經使用Msbuild來取代Vcbuild建置VC++的專案了
結語
目前推測可能建置失敗的原因,是因為MapInfo中使用了C++的核心,
而用Msbuild建置時無法處理相關的東西,
所以造成了失敗,至於解決的方法如果有找到之後再分享給大家。
參考文章: