尝试从具有相同名称但位于不同文件夹的两个单独程序集中加载资源时遇到了一些问题:
甲ResourceDictionary命名Resources.xaml在每个这些组件的嵌入式(作为页).
要加载第一个ResourceDictionary,我使用以下代码段:
// Load the assembly in memory
var assembly = Assembly.LoadFrom(@"c:\folder1\FCL.Dll");
// Get Dictionnary
var uri = string.Format("pack://application:,,,/{0};Component/Resources.xaml", assembly.GetName().Name);
var resourceDictionary = new ResourceDictionary { Source = new Uri(uri) };
Run Code Online (Sandbox Code Playgroud)
这个正在运行!
但是,当我尝试加载第二个ResourceDictionary与代码(只是改变了相同的片段Assembly.LoadFrom(@"c:\folder1\FCL.Dll")通过Assembly.LoadFrom(@"c:\folder2\FCL.Dll"),它不会从C加载资源:\文件夹2\fcl.dll,但那些存储在先前加载C:\文件夹1\fcl.dll: - (
原因:URI 的shortAssemblyName字段是相同的,在可能的情况下FCL:
var uri = string.Format("pack://application:,,,/{0};Component/Resources.xaml", assembly.GetName().Name)
Run Code Online (Sandbox Code Playgroud)
有人知道如何解决这个问题吗?