同じ名前で別のフォルダーにある2つの別個のアセンブリからリソースを読み込もうとすると、問題が発生しました。
- 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
、同じコード スニペットを使用して 2 番目を読み込もうとすると (変更Assembly.LoadFrom(@"c:\folder1\FCL.Dll")
するだけAssembly.LoadFrom(@"c:\folder2\FCL.Dll")
で、c:\folder2\fcl.dll からリソースは読み込まれませんが、以前に読み込まれた c:\folder1\fcl.dll に保存されているリソースは読み込まれません)。 -(
原因: URI のshortAssemblyNameフィールドは同じです (FCL の場合もあります)。
var uri = string.Format("pack://application:,,,/{0};Component/Resources.xaml", assembly.GetName().Name)
誰かがこの問題を解決する方法を知っていますか?