我正在寻找一种方法来加载我的prism模块缺少的第三方dll(telerik),当这个需要进入我的shell时。
我创建了一个带有自定义ModuleCatalog
的boostrapper我的CustomModuleCatolog负责查找我的模块dll标记为IModule并将它们引用到托管目录中。
这很好用。
唯一的问题是,当我的moduleA启动时,它将需要Telerik.Windows.Controls.gridview。 此dll未引用到shell项目中。 我不想在shell项目中引用不需要的DLL。
所以我收到错误,因为没有加载此dll。
我的问题是:
是否有一种优雅的方法可以在模块需要时加载所有第三个dll(只有缺少的模块)?
我应该直接从我的CustomModuleCatalogue加载此依赖项, 或者我应该在调用IModule.Initialize时加载它? 还有其他办法吗?
提前谢谢。答案 0 :(得分:1)
我通过设置模块来处理这个问题。输出文件夹与shell相同。如果我的一个模块引用了某些内容,它会被复制到输出中,模块会在运行时找到它。
如果您有一个单独的模块文件夹,则必须处理shell中的AppDomain.AssemblyResolve
事件(例如,请参阅Resolve assembly references from another folder)。