2011-01-24 82 views
0

我接管了一個引用dll的Web應用程序項目。該解決方案具有實際的項目以及用於創建DLL的類庫。我需要對Web應用程序進行更改並部署到生產環境。我用來部署asp.net網站以及非常簡單的傳統asp,只需複製這些文件即可。.Net Web應用程序和編譯/部署

我需要幫助來理解編譯和部署過程。這裏有一些問題: 1)類庫(DLL)改變;我只是編譯該類庫項目並僅移動該Dll。 2)Web應用程序項目改變了,dll保持不變;我要移動哪些文件。

此外,如果有人可以澄清部署時如何處理DLL版本。我用舊的註銷/註冊DLL的方式,現在情況並非如此。我擔心在同一個盒子上有多個DLL副本。

任何幫助或閱讀引用將不勝感激。

賈馬爾

回答

0

聽起來像你正在討論預編譯的.net應用程序。該應用程序使用Aspnet_compiler.exe進行編譯,並將新的DLL複製到主機。

DLL不必註冊,IIS「知道」如何處理預編譯的.net應用程序。這幾乎是隨時隨地的;與直接複製.aspx文件不同。

您可以更新DLL的子集(例如,類庫)。有幾種可用模式允許您編譯全部或部分應用程序。

+0

如何在不更改後面的代碼的情況下更改aspx文件,您必須編譯或僅移動aspx。 – Jamal 2011-02-11 16:34:37

0

當您更改DLL,很多時候,你能把它的權利在假設你不是一個特定的版本數量的參考。通常爲了安全起見,我在更改DLL時再次將整個網站複製出來。它不是絕對必要的,但它可能是最簡單的方法,如果您的網站不是太大。

如果要更改未以其編譯形式(App_Code文件夾中的.aspx,.aspx.cs,.cs文件)進行部署的文件,只需更新該特定文件並重新啓動IIS即可。

0

當您以這種方式手動部署時,很容易犯一個錯誤(忘記複製相關文件)。這發生在我身上。

我建議您使用Visual Studio中的發佈功能。 您可以右鍵單擊Web應用程序,然後從上下文菜單中選擇「發佈」。我通常發佈到本地文件夾(您可以直接發佈到您的服務器),然後使用FileZilla等FTP客戶端進行實際部署(我有一些直接從Visual Studio部署的問題)。

使用FileZilla上傳時,您可以指定希望如何處理現有文件覆蓋。 我使用選項:'覆蓋,如果源文件更新'。這種方式部署速度很快(只有已更改的文件被刪除)並且安全,因爲我們不能錯過文件。

要回答你的問題: 1)是,部署類庫是足夠的,但只有在它與舊版本保持二進制兼容的情況下(容易出錯)。 2)您需要部署已更改的文件(dll,aspx,cshtml等)。如果類庫dll沒有更改,則不需要重新部署它們。

按照上面的步驟,你應該沒問題。

+0

注意:如果您確實'覆蓋源文件更新',請務必不要讓Visual Studio刪除發佈文件夾中的內容,否則可能會覆蓋未更新的文件 – Jimmy 2011-01-24 20:11:59

+0

謝謝大家的回覆。我還在努力的是DLL版本控制部分。我做了更多的研究,似乎有東西告訴Web應用程序要使用哪些DLL版本以及從哪個文件夾(\ bin)。另外,我計劃移動所有的文件,但我需要了解哪些文件是必要的,因爲項目已編譯。 – Jamal 2011-01-26 13:57:02

0

一般來說,如果一個相關程序集改變了,你可以部署新程序集。但是,如果該程序集的任何接口發生更改或者存在其他相應的Web應用程序更改,則必須部署整個事件。這就是說,我見過的商店需要完整的重新編譯,部署和測試,即使只是依賴程序集中的一行代碼發生了變化。

完整的部署部分非常簡單。

  1. 右鍵單擊Web項目,然後單擊發布。
  2. 直接發佈到Web服務器(我不推薦這麼做)或將其發佈到本地目錄。
  3. 進行生產推送所需的任何配置更改。
  4. 如果您發佈到本地目錄,請將編譯的文件複製到您的生產服務器。

有人說先刪除生產文件,然後複製。其他人說複製到一個新的目錄並重新命名IIS到新的目錄。你必須看到什麼適合你。

現在,網絡應用給你的一件事就是配置轉換。這意味着您可以讓編譯器根據您要發佈的環境進行配置更改。我強烈建議你研究和使用這些。這使壞的可能性大大降低。