关于plugin 程序 动态卸载 plugin 的思考

本文探讨了基于插件原理的软件中动态卸载插件的实际意义及其难点,特别是使用AppDomain进行动态加载和卸载时遇到的问题,包括DLL加载方式、对象序列化需求及常见失败案例。

  我觉得对于基于插件原理的软件,动态卸载的意义不是很大,因为身边用的知名软件大多都是靠重启实现的....除非是客户的需求必须要实现.....

 

 而且代码我也试过了:

                    AppDomainSetup ads = new AppDomainSetup();
                    ads.ShadowCopyFiles = "true";
                    AppDomain.CurrentDomain.SetShadowCopyFiles();
                    Evidence adevidence = AppDomain.CurrentDomain.Evidence;
                    AppDomain appDomain = AppDomain.CreateDomain("pluingManager");
                    appDomain.SetShadowCopyFiles();
                   
                    Assembly asm = appDomain.Load(strDllFullName);
                    object plugObject = Activator.CreateInstance(asm.GetType(strClassFullName));

                    IMenuPlugin plugin = (IMenuPlugin)plugObject;
                    plugins.Add(plugin);

 

存在的问题主要有以下几个:

1,appDomain.Load方法加载dll时候不会像Assembly.LoadFrom方法那样动态的去加载引用到得dll等信息...

2, 所有对象必须是可序列化的.....

3,网上好多人都有议论卸载不成功的事(我代码没有跑通,这一点我不过多评论)

  希望有共同爱好的朋友多多指教........

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值