Dot-Net

使用 .NET 在執行時替換程序集

  • December 5, 2013

有沒有辦法使用外掛系統(我將與 IoC 容器一起使用)在執行時載入一個程序集版本,然後在 AppDomain 執行時替換該 DLL?我不想重新啟動應用程序。

MEF會做這樣的事情嗎?

這本質上就是 NUnit 所做的(或者至少是這樣做的,我有一段時間沒接觸過程式碼了)。但它通過在另一個 AppDomain 中載入測試程序集,使用DoCallbackAppDomain 的方法呼叫該域中的程式碼,然後在重新編譯測試程序集時重新載入測試程序集。

因此,雖然您無法解除安裝或重新載入 dll,但您可以解除安裝並重新載入應用程序域並在其中執行程式碼。

使用純 .net 是不可能的,因為無法從域中解除安裝程序集。由於 MEF 是用託管程式碼編寫的,我懷疑這是可能的。我通過將程序集載入到單獨的域來解決了這個問題,當我想重新載入它時,我停止了它並重新開始。

引用自:https://stackoverflow.com/questions/5080862