我正在使用 WPF prism 进行模块化应用程序开发,并且模块目录文件中存在的每个模块都位于不同的文件夹中,并且一次从区域中添加和删除它们。每个模块都从其自己的文件夹和应用程序 exe 中加载在不同的位置。模块的所有依赖项都在它自己的文件夹中。在一个模块 (dll) 中,添加到区域的视图具有资源字典,并且 ResourceDictionary 的来源为:Source="/UIControls.Wpf.MessageBox;component/Themes/Generic.xaml"
如果资源 DLL (UIControls.Wpf.MessageBox.dll) 存在于应用程序 exe 所在的位置,则它可以工作,这意味着视图被添加到该区域。但是这个资源 DLL 必须存在于模块 DLL 所在的文件夹中(模块的所有依赖项都在它自己的文件夹中)。因此,如果我从应用程序 exe 所在的位置删除此 DLL,那么它会给出 FileNotFound 异常并且模块不会被加载。如何将资源字典的源/路径作为模块的代码库?我不希望作为应用程序 exe 相关的源,我希望源作为加载模块的路径,即它的代码库。是否有任何方式或其他语法使源代码不是应用程序 exe 相关的。请给我一些解决方案。我有一个选择是使用 AssemblyResolved 事件。但我不想使用它。