【问题标题】:Prism Load third dll when module startsPrism在模块启动时加载第三个dll
【发布时间】:2016-05-13 08:19:33
【问题描述】:

我目前正在寻找一种方法来加载我的 prism 模块缺少的第三方 dll (telerik),当我的 shell 需要这个时。

我创建了一个带有自定义 ModuleCatalog 的 boostrapper

我的 CustomModuleCatolog 负责查找标记为 IModule 的模块 dll,并将它们引用到托管目录中。

这很好用。

唯一的问题是,当我的 moduleA 启动时,它需要 Telerik.Windows.Controls.gridview。 这个 dll 没有被引用到 shell 项目中。 我不想在 shell 项目中引用不需要的 DLL。

所以我收到一个错误,因为这个 dll 没有加载。

我的问题是:

有没有一种优雅的方式在模块需要时加载所有第三个 dll(仅缺少一个)?

我是否应该直接从我的 CustomModuleCatalogue 加载此依赖项? 还是应该在调用 IModule.Initialize 时加载它? 还有其他方法吗?

提前致谢。

【问题讨论】:

  • 您能给我们提供更多关于错误信息的信息吗?

标签: c# wpf dll telerik prism


【解决方案1】:

我通过将模块的输出文件夹设置为与 shell 的相同来处理这个问题。如果我的一个模块引用了某些东西,它会被复制到输出中,并且模块会在运行时找到它。

如果您有一个单独的模块文件夹,则必须在 shell 中处理 AppDomain.AssemblyResolve 事件(例如,参见 Resolve assembly references from another folder)。

【讨论】:

  • 我真的想将我的模块保存在一个文件夹名称 Module/ModuleName1、Module/ModuleName2 等中...所以您建议从我的 shell 项目中观看 AppDomain.CurrentDomain.AssemblyResolve?我会试一试:)
  • 我在看类似的东西,但我觉得这不是最优雅的方式。 ://
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
相关资源
最近更新 更多