Je veux charger à nouveau AppDomin certains assemblée qui a un complexe de références de l'arbre (MyDll.dll -> Microsoft.Office.Interop.Excel.dll -> Microsoft.Vbe.Interop.dll -> Office.dll -> stdole.dll)
Que j'ai compris, lorsqu'une assemblée est chargé de domaine d'application, les références ne serait pas chargé automatiquement, et je dois les charger manuellement. Alors, quand je fais:
string dir = @"SomePath"; // different from AppDomain.CurrentDomain.BaseDirectory
string path = System.IO.Path.Combine(dir, "MyDll.dll");
AppDomainSetup setup = AppDomain.CurrentDomain.SetupInformation;
setup.ApplicationBase = dir;
AppDomain domain = AppDomain.CreateDomain("SomeAppDomain", null, setup);
domain.Load(AssemblyName.GetAssemblyName(path));
et got FileNotFoundException
:
Impossible de charger le fichier ou l'assembly 'Madll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.
Je pense que le mot clé est l'une de ses dépendances.
Ok, je le fais avant l' domain.Load(AssemblyName.GetAssemblyName(path));
foreach (AssemblyName refAsmName in Assembly.ReflectionOnlyLoadFrom(path).GetReferencedAssemblies())
{
domain.Load(refAsmName);
}
Mais j'ai reçu FileNotFoundException
encore une fois, sur un autre (de référence) de l'assemblée.
Comment charger toutes les références de manière récursive?
Dois-je créer des références de l'arbre avant le chargement de la racine de l'assemblée? Comment obtenir un assemblage de références sans le charger?