Prism在模块启动时加载第三个dll

时间:2016-05-13 08:19:33

标签: c# wpf dll telerik prism

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

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

的boostrapper

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

这很好用。

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

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

我的问题是:

是否有一种优雅的方法可以在模块需要时加载所有第三个dll(只有缺少的模块)?

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

提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

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