同事在使用VS2008 Web Deployment Project時編譯部署時出現以下錯誤:

MSB6004: The specified task executable location "bin\aspnet_merge.exe" is invalid.

有趣的是,同樣的Deployment Project在另一位新同事的機器上執行正常。比較二台機器環境,新同事的機器只裝了VS2008的Web Deployment Project,而問題機則已裝過VS2005的Web Deployment Project,最近才加裝VS2008版本的部署專案。

我優先懷疑是檔案路徑問題,立刻招喚茶包一哥--Process Monitor,很快抓到devenv.exe曾在部署專案輸出路徑/bin下找aspnet_merge.exe(東西不會在那裡呀! 笨蛋)的記錄,證實這是因路徑設定錯誤導致的問題。爬文後找到一篇珍貴文獻,追查C:\Program Files\MSBuild\Microsoft\WebDeployment\v9.0\Microsoft.WebDeployment.targets,果然也看到跟原PO一樣的設定ExePath="$(FrameworkSDKDir)bin",修改為<AspNetMerge
ExePath="$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v8.0"...>
後問題排除! (註: 需重新啟動VS2008)

我猜想有可能是VS2008 Deployment Projects被安裝在已裝過VS2005 Deployment Projects的機器時,路徑判別有誤,未正確調整Microsoft.WebDeployment.targets所致;若是如此,應當算是安裝程式的Bug! 不過,以上推論我並沒有找環境實地驗證過,就留給遇到相似情境的網友再隨喜回報分享吧!


Comments

Be the first to post a comment

Post a comment