WPF Prism - 在应用程序中管理模块

Tri*_*ror 4 wpf prism

使用Prism和WPF,我想允许用户从存储库中选择他们想要使用的模块.每个模块本质上都是一个附加组件,选择要使用的模块只需将其移动到DLL的"模块"文件夹中即可加载.

但是,在尝试在应用程序运行时移动DLL时,会抛出错误,因为此时DLL正在使用中.你如何解决这个问题并允许用户随意添加/删除模块?

Col*_*ith 5

一旦一个组件加载到一个组件中AppDomain,它就不会(不能)卸载,直到它AppDomain被拆除....我猜这是你的问题.

如果你在网上看,有一些技巧可以解决这个问题.....

创建一个额外的AppDomain

创建一个额外的AppDomain,然后你可以加载你的程序集....当你完成后,你只需要调用Unload关闭AppDomain,这将释放程序集.

但是你想从其他访问的类型AppDomains有从派生MarshalByRefObject让你的对象是remoteable ....并从其他应用程序域的呼叫可以在被整理.

将程序集加载到MemoryStream中

这里有一个非常有趣的技术....它将程序集加载到MemoryStream第一个,然后它从.NET中加载程序集MemoryStream......从而意味着磁盘上的"文件"没有被锁定.