﻿# 如何在「建置部署套件」或「單鍵發行」時一起發佈空目錄

上週公司有個同事遇到一個問題，就是他透過 Visual Studio 2010 的「單鍵發行」功能發佈網站，程式在執行時就會出錯，經我檢查之後發現原來他在網站的 App\_Data 目錄下有建立一個必要的資料夾，此資料夾會存放執行時期寫入的資料，所以目錄不存在就會掛掉，但是 Visual Studio 2010 其實並不會發佈任何沒有檔案的目錄，因此要解決這個問題就必須特別處理一下。

這其實是個很小的問題，不過還是有必要特別寫篇文章提醒，否則空目錄真的會對網站自動部署的過程帶來一些困擾，尤其是導入 TFS Team Build 時就很有可能有目錄沒有自動被建立而導致錯誤發生。

如果你在 App\_Data 目錄建立一個 NewFolder1 空目錄：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/34aa3bc02a26bffc689b-image_1123.png)

你可能會以為此目錄會部署到遠端去，但事實不然，我們用「建置部署套件」或「發行」功能時，不但是 NewFolder1 會被排除在外，連 App\_Data 目錄都不會被建立起來！

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/0b3e9e55d279dd7c53c6-image_1124.png)

我們以「建置部署套件」為例，在產生部署套件後，封裝目錄內完全不會有 App\_Data 目錄的存在：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/793c3552751f07077dfc-image_1125.png)

解決方法很簡單，只要在空目錄下建立一個沒有內容的檔案，這個目錄就會被部署過去（當然也會有這個空檔案，請眼不見為淨）。不過就算你建立一個空檔案在 NewFolder1 目錄裡，但是該檔案沒有被加進專案的話，一樣是沒用的，所以要記得加入到專案中才行：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/24f43831f34bad6dba28-image_1126.png)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/39c9e61c12b7ba188dae-image_1127.png)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/c360fc757e7dc770808f-image_1128.png)

這時再一次「建置部署套件」或「發行」就會有該目錄出現了：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/9dd3b4515b60fbe67649-image_1129.png)

**相關連結**

-   [Tip #105: Did you know … How to include empty directory when package a web application?](https://learn.microsoft.com/en-us/archive/blogs/webdevelopertips/tip-105-did-you-know-how-to-include-empty-directory-when-package-a-web-application)
