none
动态链接库被调用时的覆盖问题! RRS feed

  • 问题

  • 开发的一个程序框架,支持通过配置文件读取并反射调用 指定动态链接库的方法。   程序框架是稳定的,这样只要通过开发动态链接库以插件的形式来增加和满足不同的功能需求,

    有这么一个烦恼,开发插件的过程中,需要多次修改和测试插件程序集,编译成DLL文件并拷贝到指定目录,这样在程序框架下可以调用执行,但是每次调用之后,再次拷贝新的DLL覆盖原来的DLL时,必须关掉框架,才能覆盖。 能否有这样一种机制, 在关闭框架中的功能页面时(或者设定一定的时间), 功能框架自动释放调用的插件程序集,这样不用关闭框架,就可以覆盖插件DLL。因为每次关闭和启动程序框架比较慢,耗费时间。

    像W3WP。exe这样的程序,是如何实现调用过的DLL,还能被删除和覆盖呢?  

    请高手协助解答以上两个问题,并提供第一个问题的解决方案?  

    非常感谢! 


    2010年1月9日 6:23

答案

  • 你好!
         你想让你的插件实现“热插拔”是吧!
         可以使用FileSystemWatcher来监视一个目录,当发生dll改变的时候就把这个dll加载到新的AppDomain中,具体可以参考:
       http://tech.ddvip.com/2009-10/1255429554135446.html
       希望对你有帮助!

    周雪峰
    • 已标记为答案 YiChun Chen 2010年1月11日 10:52
    2010年1月9日 8:42
    版主
  • 你可以通过AppDomain类来新建一个应用程序域 在这个程序域中加载dll并且反射执行相关操作 调用其Unload方法就可以卸载掉就不会出现你这样的情况了
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    • 已标记为答案 YiChun Chen 2010年1月11日 10:52
    2010年1月11日 3:22
    版主

全部回复

  • 你好!
         你想让你的插件实现“热插拔”是吧!
         可以使用FileSystemWatcher来监视一个目录,当发生dll改变的时候就把这个dll加载到新的AppDomain中,具体可以参考:
       http://tech.ddvip.com/2009-10/1255429554135446.html
       希望对你有帮助!

    周雪峰
    • 已标记为答案 YiChun Chen 2010年1月11日 10:52
    2010年1月9日 8:42
    版主
  • 你可以通过AppDomain类来新建一个应用程序域 在这个程序域中加载dll并且反射执行相关操作 调用其Unload方法就可以卸载掉就不会出现你这样的情况了
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    • 已标记为答案 YiChun Chen 2010年1月11日 10:52
    2010年1月11日 3:22
    版主
  • 非常感谢!
    2010年1月26日 8:46
  • 非常感谢!
    2010年1月26日 8:46