VS2012起不再支援Web Deployment Project(WDP),是許多還在維護Web Site Project(WSP)朋友的痛吧?以我的工作環境為例,線上系統仍有超過半數是WSP,雖然知道Web Application Project(WAP)/ASP.NET MVC是未來主流勢不可擋,但運作得好好的系統,若有人膽敢嚷嚷新版開發工具不支援部署專案編譯,所以網站得翻掉重測重上線,就算不被主管巴頭,也會被同事拉到牆角餵磚頭。想必不少朋友的解決方案跟我一樣-平日開心使用VS2012/VS2013享受上流開發體驗,要編譯WSP wdproj時,就找台有VS2010的機器或VM專門負責。(怕有人不知道:開源社群、非企業及小型開發團隊,可以使用免費的Visual Studio Community 2013哦!參考)
最近對MSBuild有多一點了解,發現VS2012/2013不支援WDP的問題並不如想像複雜。基本上wdproj本身就是個MSBuild設定檔,只要補足WDP專屬的Task,在只裝VS2013的機器也能成功編譯WDP!
方法很簡單:找一台裝好VS2010及Web Deployment Project支援的機器,找到 C:\Program Files (x86)\MSBuild\Microsoft\WebDeployment\ 資料夾,裡面有個v10.0子資料夾(VS2008 WDP則為v8.0),將整個WebDeployment資料夾複製到VS2013主機的相同路徑,搞定。
要由命令提示視窗執行MSBuild需事先設好PATH等必要環境參數,而最簡便的方法是直接使用Developer Command Prompt for VS2013(VS2013開發者命令提示字元),預先已備妥所有環境變數,直接下指令就能順利執行。
如下圖所示,在VS2013開發者命令提示字元中切換路徑到wdproj所在目錄,輸入msbuild project_name.wdproj(如果該資料夾只有一個wdproj,還可省略檔名,直接下msbuild即可),就能產生與VS2010時代相同的編譯結果囉~