上週公司有個同事遇到一個問題,就是他透過 Visual Studio 2010 的「單鍵發行」功能發佈網站,程式在執行時就會出錯,經我檢查之後發現原來他在網站的 App_Data 目錄下有建立一個必要的資料夾,此資料夾會存放執行時期寫入的資料,所以目錄不存在就會掛掉,但是 Visual Studio 2010 其實並不會發佈任何沒有檔案的目錄,因此要解決這個問題就必須特別處理一下。
這其實是個很小的問題,不過還是有必要特別寫篇文章提醒,否則空目錄真的會對網站自動部署的過程帶來一些困擾,尤其是導入 TFS Team Build 時就很有可能有目錄沒有自動被建立而導致錯誤發生。
如果你在 App_Data 目錄建立一個 NewFolder1 空目錄:
你可能會以為此目錄會部署到遠端去,但事實不然,我們用「建置部署套件」或「發行」功能時,不但是 NewFolder1 會被排除在外,連 App_Data 目錄都不會被建立起來!
我們以「建置部署套件」為例,在產生部署套件後,封裝目錄內完全不會有 App_Data 目錄的存在:
解決方法很簡單,只要在空目錄下建立一個沒有內容的檔案,這個目錄就會被部署過去(當然也會有這個空檔案,請眼不見為淨)。不過就算你建立一個空檔案在 NewFolder1 目錄裡,但是該檔案沒有被加進專案的話,一樣是沒用的,所以要記得加入到專案中才行:
這時再一次「建置部署套件」或「發行」就會有該目錄出現了:
相關連結