我觉得对于基于插件原理的软件,动态卸载的意义不是很大,因为身边用的知名软件大多都是靠重启实现的....除非是客户的需求必须要实现.....
而且代码我也试过了:
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,网上好多人都有议论卸载不成功的事(我代码没有跑通,这一点我不过多评论)
希望有共同爱好的朋友多多指教........
本文探讨了基于插件原理的软件中动态卸载插件的实际意义及其难点,特别是使用AppDomain进行动态加载和卸载时遇到的问题,包括DLL加载方式、对象序列化需求及常见失败案例。
668

被折叠的 条评论
为什么被折叠?



