将 Prism 与 WPF 结合使用,我希望允许用户从存储库中选择他们想要使用的模块。每个模块本质上都是一个附加组件,选择要使用的模块只需将其移动到 DLL 的“模块”文件夹中即可加载。
但是,在应用程序运行时尝试移动 DLL 时,会引发错误,因为此时 DLL 正在使用中。如何解决这个问题并允许用户随意添加/删除模块?
一旦程序集被加载到AppDomain
,它不会(不能)被卸载,直到AppDomain
被拆毁了......我想这是你的问题。
如果你在网上查看,有一些技巧可以解决这个问题......
创建额外的 AppDomain
创建一个额外的AppDomain
然后你可以将你的程序集加载到......当你完成后你只需调用Unload
关闭AppDomain
这将释放程序集。
然而,您希望从其他类型访问的类型AppDomains
必须源自MarshalByRefObject
这样你的对象是可远程的......并且来自其他应用程序域的调用可以被编组。
- C#中使用AppDomain动态加载和卸载dll https://stackoverflow.com/questions/6578170/using-appdomain-in-c-sharp-to-dynamically-load-and-unload-dll
将程序集加载到 MemoryStream 中
这里有一个非常有趣的技术......它将程序集加载到MemoryStream
首先,然后它让 .NET 从MemoryStream
...这意味着磁盘上的“文件”没有被锁定。
http://social.msdn.microsoft.com/Forums/en-US/clr/thread/093c3606-e68e-46f4-98a1-f2396d3f88ca/ http://social.msdn.microsoft.com/Forums/en-US/clr/thread/093c3606-e68e-46f4-98a1-f2396d3f88ca/
如何在不使用 AppDomains 的情况下实现 .net 插件? https://stackoverflow.com/questions/458699/how-do-i-implement-net-plugins-without-using-appdomains
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)