2010-02-22 31 views
3

我有一個ASP.NET web應用程序,其中包含/ bin文件夾'Example.dll'中的一個DLL。如果我沒有提及Web.config中的'Example.dll',是否可以安全地將它替換爲較新版本的'Example.dll',並且應用程序會使用它?什麼是更新ASP.NET Web應用程序DLL的最佳方法?

如果不是,需要哪些步驟?

回答

4

是的,這是安全的(假設您已經小心並且沒有做任何重大更改),但是這裏有一個我從痛苦經歷中學到的提示:不要在同一文件夾中備份舊版本。即使您將其重命名爲Example.dll0,它仍可能會混淆框架。

此外,這樣做會重新啓動應用程序。

+0

根據我的經驗,這可能很容易導致一個'FileLoadException',並帶有消息「無法加載文件或程序集或它的一個依賴項。」定位的程序集清單定義與程序集引用不匹配。事實上,我剛剛在嘗試更換DLL時遇到過這種情況,最終不得不重新部署整個應用程序。我認爲這取決於您的部署策略。例如,這種情況下的應用程序是預編譯的。 – 2010-02-22 21:31:41

+0

我從來沒有經歷過,喬希和我的所有應用程序都是預編譯的。但是,我猜如果它是在一個進程的中間,並且它(無論出於何種原因)想要在回收應用程序之前完成,可能會發生。一旦應用程序重新啓動,我不明白爲什麼它會查找舊的DLL。 – pdr 2010-02-22 21:40:24

+0

我放入新DLL(沒有會導致編譯錯誤的更改),並且我的應用程序完全停止工作,並且事件查看器有幾條消息(每個後續請求一條消息)。重新部署整個應用程序解決了問題。星期五剛剛發生在我身上。 – 2010-02-22 22:04:57

1

替換DLL將觸發應用程序域(整個Web應用程序)重新啓動,任何使用此DLL的代碼將在重新啓動時使用新版本。當前對舊的請求將完成,然後關閉。

所以不需要額外的步驟,只需要知道應用程序將重新啓動。

相關問題