ho incontrato qualche problema quando si cerca di caricare le risorse da due assemblee separate aventi lo stesso nome ma trova in una cartella diversa:Caricamento risorsa ResourceDictionary a runtime dalle assemblee con lo stesso nome
- C: \ cartella1 \ fcl.dll
- C: \ cartella2 \ fcl.dll
Un ResourceDictionary
nome Resources.xaml è incorporato (come pagina) in ciascuno di questi gruppi.
per caricare la prima ResourceDictionary
, io uso il seguente frammento:
// 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) };
Questo è in esecuzione!
Ma quando provo a caricare la seconda ResourceDictionary
con lo stesso frammento di codice (solo cambiando Assembly.LoadFrom(@"c:\folder1\FCL.Dll")
da Assembly.LoadFrom(@"c:\folder2\FCL.Dll")
, non carica le risorse da c: \ folder2 \ fcl.dll, ma quelli memorizzati nel c precedentemente caricato : \ cartella1 \ fcl.dll :-(
la causa: il shortAssemblyName campo della URI è lo stesso, nel caso in maggio FCL:
var uri = string.Format("pack://application:,,,/{0};Component/Resources.xaml", assembly.GetName().Name)
qualcuno sa come risolvere questo problema ?
Correzione: è possibile avere più assiemi caricati con lo stesso nome se si utilizzano nomi forti e se le versioni differiscono. Dovresti quindi specificare la versione come parte dell'URI. – johndsamuels