如何在不刪除目標文件夾內容的情況下使用 Visual Studio 2008 中的“發布”功能?
當我在 Visual Studio 2008 中使用 Build->Publish Web Site 時,大多數時候它會編譯站點,然後簡單地問我“目標文件夾中的所有文件都將被刪除。繼續嗎?” (或類似的東西)。但是,有時,在 Visual Studio 中發布項目時,我會看到一個對話框,讓我可以選擇完全替換文件夾的內容,或者只是用較新的版本替換更改的文件。
我更喜歡在不完全刪除文件夾的情況下發布,因為部署的應用程序會在使用時創建使用者文件和記憶體文件,我不想採取額外的步驟來保存。但是,我不確定為什麼 Visual Studio 並不總是給我這個選項。這是我可以更改的設置嗎?它是否與我正在使用的 .NET 版本相關聯?
任何見解表示讚賞!
編輯 - 2009-01-20 的後續行動
我還沒有弄清楚這一點,但這裡有更多資訊。
這是我的 Win XP 桌面上的一個 ASP.NET 項目的發布功能的樣子:
這是我的 Vista 筆記型電腦上不同項目的樣子:
請注意第二個螢幕截圖中的單選按鈕,允許我選擇在發布之前刪除文件夾的內容,或者僅覆蓋匹配的文件。我希望每個項目都有這些選項。
兩台電腦都執行 Visual Studio 2008 Professional(版本 9.0.30729.1 SP,根據 Help->About)。完全相同的版本。而且我懷疑作業系統差異導致了此功能更改。這一定是某個地方的設置,對吧?有人知道嗎?
John 是對的,唯一的區別是您的項目之一是網站項目,而另一個是Web 應用程序項目。除非您在Web 應用程序項目中,否則您不會看到“轉換為 Web 應用程序”選項。我知道……這是非常具有誤導性的。這背後的原因源於您轉換為 Web 應用程序項目的方式。如果您打算轉換它(這可能是一個真正的痛苦,取決於它的設置方式),那麼您需要注意一些差異:
在Web 應用程序項目中,所有內容都經過預編譯,所有程式碼隱藏頁面都將編譯為 .dll —- 在網站項目 中,項目中沒有任何內容是預編譯的,編譯器將編譯所有內容以確保其有效但沒有任何已編譯的頁面被上傳。當使用者第一次嘗試訪問該站點時,每個頁面都會被編譯成自己的 dll。這意味著在網站項目中,您可以上傳單個程式碼隱藏文件。
命名空間 - 在Web 應用程序項目中,預設情況下會在網站項目中創建命名空間,但它們不是。因此,如果您打算轉換它們,您可能需要花一些時間來添加它們。
項目文件 - 您會注意到網站項目沒有Web 應用程序項目所具有的“cproj”文件。
我已經轉換了其中一些項目,只要“app_code”文件夾中沒有很多程式碼,我發現它們執行得相當順利。您可以嘗試一下,看看它是多麼容易,如果看起來會很痛苦,我建議FileZilla只需 FTP 就可以了,免得您頭疼。
祝你好運

