之前曾經寫過【ASP.NET 網站部署可考慮使用 Web Deployment Project 】而我們所有的 ASP.NET 專案也幾乎都用 WDP 部署網站,連 ASP.NET MVC 也不例外。但我們之前有個專案因為需要開發多國語系網站,因此會用到 App_GlobalResources 目錄放置網站所需的資源檔(*.resx),在透過 WDP 封裝部署之後就會全部編譯成組件,而且預先編譯(Pre-compiled)過的網站是不允許動態編譯的,也就是說透過 WDP 部署含有資源檔的專案會造成日後資源檔維護的困擾。
因為客戶希望網站部署之後能透過 Lutz Roeder's .NET Resourcer 更新各國語系的翻譯內容,如果利用 WDP 部署的話,就變成每次都要重新編譯網站,這樣就太大費周章了。
遇到這種類型的專案,就必須改用 Visual Studio 2008 中的發佈網站(Publish)功能,就可以保留全域資源檔 (App_GlobalResources) 在輸出的目錄,並且可以在部署後隨時更新資源檔的內容。
採用 Publish 部署方式的缺點就是無法自訂 WDP 中的 MSBuild Task 設定,這樣就會導致有些原本希望自動化的作業無法達成,例如部署後刪除特定目錄或檔案之類的動作。
相關連結