我有一個vb.net 3.5應用程序引用一個DLL(abc.dll,也在.net 3.5中) 這個DLL是由應用程序不時訪問。如果在執行過程中的任何時候,如果我刪除了dll,我希望應用程序在下次嘗試使用dll中的類時發生錯誤。但是,這不是我所看到的行爲。如果我在啓動前刪除了dll,應用程序在啓動時會引發錯誤。但不是當啓動後刪除dll時。參考被刪除時會發生什麼?
這是標準行爲,還是我做錯了什麼? 如果在嘗試使用類時未找到dll,是否可以讓應用程序拋出錯誤?
在此先感謝。
我有一個vb.net 3.5應用程序引用一個DLL(abc.dll,也在.net 3.5中) 這個DLL是由應用程序不時訪問。如果在執行過程中的任何時候,如果我刪除了dll,我希望應用程序在下次嘗試使用dll中的類時發生錯誤。但是,這不是我所看到的行爲。如果我在啓動前刪除了dll,應用程序在啓動時會引發錯誤。但不是當啓動後刪除dll時。參考被刪除時會發生什麼?
這是標準行爲,還是我做錯了什麼? 如果在嘗試使用類時未找到dll,是否可以讓應用程序拋出錯誤?
在此先感謝。
簡答題沒有。一旦DLL被加載,它就會被加載,直到使用該DLL的應用程序0123'從進程中卸載。只有這樣你才能刪除原始的DLL。
較長的答案:
這是一個複雜的問題,因爲它取決於DLL是如何被加載到進程。有幾種不同的方式可以發生這種情況
錯誤總是發生在.NET框架嘗試加載引用的程序集時。所以看起來CLR決定在應用程序啓動時加載程序集。
這是一個桌面應用程序 – Apeksha 2010-03-12 17:14:41
是否要刪除啓動錯誤,並且如果使用了錯誤,或者*還有*如果程序集被刪除時發生錯誤? – 2010-03-12 17:26:00