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

标签 wpf prism

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

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

最佳答案

一旦程序集被加载到 AppDomain ,直到 AppDomain 才会(不能)被卸载。被拆除了....我想这是你的问题。

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

创建一个额外的 AppDomain

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

但是,您希望从其他 AppDomains 访问的类型必须来自 MarshalByRefObject这样您的对象是可远程的......并且可以编码来自其他 AppDomain 的调用。

  • Using AppDomain in C# to dynamically load and unload dll

  • 将程序集加载到 MemoryStream 中

    这里有一个非常有趣的技术....它将程序集加载到 MemoryStream首先,它让 .NET 从 MemoryStream 加载程序集...这意味着磁盘上的"file"没有被锁定。
  • http://social.msdn.microsoft.com/Forums/en-US/clr/thread/093c3606-e68e-46f4-98a1-f2396d3f88ca/
  • How do I implement .net plugins without using AppDomains?
  • 关于WPF Prism - 管理应用程序中的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12898269/

    相关文章:

    c# - 如何通过使用 MVVM 的 Prism (+ MEF) View 中的特定控件的可用性来控制 WPF 4.5 Ribbons 上下文选项卡的可见性?

    c# - 使用 RenderedGeometry 作为路径数据不起作用

    c# - Awesomium 在 WindowsBase.dll 中引发 ArgumentException

    wpf - 无法在 WPF 中使用 MVVM 禁用控件(文本框)?

    c# - Prism v4 使用 DirectoryModuleCatalog 按需加载模块

    c# - View 是否应该间接绑定(bind)到 MVVM 模型中的属性?

    wpf - Mac OS X 支持 WPF 吗?

    c# - 将弹出窗口保持在窗口范围内

    prism - 在 Composite WPF (Prism) 中,IRegion.Add 和 IRegionManager.RegisterViewWithRegion 有什么区别?

    c# - 在 Prism 应用程序的多个模块中使用的模型应该放在哪里?