﻿# ASP.NET MVC 開發心得分享 (9)：發佈 MVC 網站的方式

之前曾經寫過【[ASP.NET 網站部署可考慮使用 Web Deployment Project](/post/2009/01/27/Visual-Studio-2008-Web-Deployment-Project) 】而我們所有的 ASP.NET 專案也幾乎都用 WDP 部署網站，連 ASP.NET MVC 也不例外。但我們之前有個專案因為需要開發多國語系網站，因此會用到 App\_GlobalResources 目錄放置網站所需的資源檔(\*.resx)，在透過 WDP 封裝部署之後就會全部編譯成組件，而且預先編譯(Pre-compiled)過的網站是不允許動態編譯的，也就是說透過 WDP 部署含有資源檔的專案會造成日後資源檔維護的困擾。

因為客戶希望網站部署之後能透過 [Lutz Roeder's .NET Resourcer](http://www.lutzroeder.com/dotnet/) 更新各國語系的翻譯內容，如果利用 WDP 部署的話，就變成每次都要重新編譯網站，這樣就太大費周章了。

遇到這種類型的專案，就必須改用 Visual Studio 2008 中的**發佈網站**(**Publish**)功能，就可以保留全域資源檔 (App\_GlobalResources) 在輸出的目錄，並且可以在部署後隨時更新資源檔的內容。

![Visual Studio 2008 中的發佈網站(Publish)功能](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/6c6273db2c8446e38fe6-image_3.png "Visual Studio 2008 中的發佈網站(Publish)功能")   ![保留全域資源檔 (App\_GlobalResources) 在輸出的目錄，並且可以在部署後隨時更新資源檔的內容](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/b08a58eb46bb5b7fdef8-image_6.png "保留全域資源檔 (App_GlobalResources) 在輸出的目錄，並且可以在部署後隨時更新資源檔的內容") 

採用 Publish 部署方式的缺點就是無法自訂 WDP 中的 MSBuild Task 設定，這樣就會導致有些原本希望自動化的作業無法達成，例如部署後刪除特定目錄或檔案之類的動作。

**相關連結**

-   [Lutz Roeder's .NET Tools](http://www.lutzroeder.com/dotnet/)
-   [ASP.NET 網站部署可考慮使用 Web Deployment Project](/post/2009/01/27/Visual-Studio-2008-Web-Deployment-Project)
