5

同じ名前で別のフォルダーにある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)

誰かがこの問題を解決する方法を知っていますか?

4

1 に答える 1

0

同じ名前で2つのアセンブリをロードすることはできないため、2番目のAssembly.LoadFromは無視されていると思います。おそらく、アセンブリの1つの名前を変更する必要があります。

于 2013-03-11T09:20:55.457 に答える