5

尝试从两个具有相同名称位于不同文件夹中的单独程序集加载资源时遇到了一些问题:

  • C:\folder1\fcl.dll
  • C:\folder2\fcl.dll

一个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) };

这是在运行!

但是,当我尝试ResourceDictionary使用相同的代码片段加载第二个时(只是更改Assembly.LoadFrom(@"c:\folder1\FCL.Dll")它不会从 c:\folder2\fcl.dll 加载资源,而是从先前加载的 c:\folder1\fcl.dll 加载资源Assembly.LoadFrom(@"c:\folder2\FCL.Dll")-(

原因:URI的shortAssemblyName字段相同,可能情况FCL:

 var uri = string.Format("pack://application:,,,/{0};Component/Resources.xaml", assembly.GetName().Name)

有人知道如何解决这个问题吗?

4

1 回答 1

0

你不能加载两个同名的程序集,所以我认为第二个 Assembly.LoadFrom 只是被忽略了。您可能必须重命名其中一个程序集。

于 2013-03-11T09:20:55.457 回答