Kanru’s 探險日誌

當發現美好的事物時,所要做的第一件事,就是把它分享給所有人

.NET - Plugin

with 2 comments

我之前在 .NET - Load Plugins 寫過如何實做簡單的 plugin interface,最近真正在用的時候才發現問題。

Assembly.Load* 雖然可以把 .dll 檔案動態載入,可是卻找不到任何方法可以 unload.. Assembly 在被載入之後是處於鎖定的狀態,如果這時候把檔案換掉的話,Assembly.Load 便無法再重新載入,會出現 Exception

這樣就沒辦法在後端偷偷換掉 backend 了 -_-

要實做動態的 load, unload 好像是要使用 System.AppDomain 來做(時際上是用 Remoting 的技術),看似簡單,可是我試到現在還沒成功過… 還變成好像 Assembly 被 Cache 起來的情況,怎麼 load, unload 都是用到舊的 Assembly… 天阿

參考:通过应用程序域AppDomain加载和卸载程序集之后,如何再返回原来的主程序域

Written by Kanru Chen

February 18th, 2006 at 10:11 pm

Posted in Programming

Tagged with ,

2 Responses to '.NET - Plugin'

Subscribe to comments with RSS or TrackBack to '.NET - Plugin'.

  1. 原來好死不死碰到 mono 的老 bug…

    http://bugzilla.ximian.com/show_bug.cgi?id=27663

    到底解決了沒阿 -_-

    kanru

    26 Feb 06 at 12:24 am

  2. 終於修好了。 跑了幾個 test case 都可以正常。 可以來修 Plugin 架構了,BTW,有另外一個叫做 SpikeNET 的 IRC Bot 跟 Bibot 要做的事還滿像的。

    kanru

    21 Apr 06 at 8:48 pm

Leave a Reply