Norbert Eder
Erfahrenes Mitglied
Hallo!
Ich verwende das .NET Framework v2.0.50215 und versuche ein eine eigene AppDomain ein DLL-Assembly zu laden.
Das ganze sieht so aus, dass es sich um einen Application Server handelt, der in mehrere Projekte aufgeteilt ist. Ein Projekt enthält alle Klassen die auch für die Application die geladen werden soll von Relevanz ist (abstrakte Application-Klasse etc.).
Mein Problem ist nun, dass beim Laden der Assembly eine FileNotFoundException geworfen wird, die mir sagt, dass die Assembly oder eine Referenz nicht gefunden wurde.
Beides liegt jedoch im angegebenen Pfad und sollte vorhanden sein. Dabei scheint es auch vollkommen egal zu sein, ob die referenzierten Assemblies im GAC liegen oder im gleichen Verzeichnis der Application.
Folgender Code stellt einen meiner Versuche dar:
Die Variable fullpath stellt hier den kompletten Pfad zur zu ladenden DLL dar. Die Methode ReadAssembly liest einfach nur die Assembly ein und gibt ein byte[] zurück. Hier nur anzumerken: Ich habe auch versucht die Assembly über
zu laden. Mit dem gleichen Erfolg.
Unter dem .NET Framework 1.1 ergeben sich keinerlei Probleme. Die MSDN gibt mir auch nicht besonderes viele Informationen dazu, da selbst Microsoft in den Beispielen zum 2.0er Framework mit den obsoleten Methoden arbeitet.
Hat hier irgendjemand eine Idee woran das liegen könnte?
Danke
Ich verwende das .NET Framework v2.0.50215 und versuche ein eine eigene AppDomain ein DLL-Assembly zu laden.
Das ganze sieht so aus, dass es sich um einen Application Server handelt, der in mehrere Projekte aufgeteilt ist. Ein Projekt enthält alle Klassen die auch für die Application die geladen werden soll von Relevanz ist (abstrakte Application-Klasse etc.).
Mein Problem ist nun, dass beim Laden der Assembly eine FileNotFoundException geworfen wird, die mir sagt, dass die Assembly oder eine Referenz nicht gefunden wurde.
Beides liegt jedoch im angegebenen Pfad und sollte vorhanden sein. Dabei scheint es auch vollkommen egal zu sein, ob die referenzierten Assemblies im GAC liegen oder im gleichen Verzeichnis der Application.
Folgender Code stellt einen meiner Versuche dar:
Code:
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = Path.GetDirectoryName(fullpath);
setup.ShadowCopyFiles = "yes";
setup.ShadowCopyDirectories = this.shadowPath;
Evidence baseEvidence = AppDomain.CurrentDomain.Evidence;
Evidence evidence = new Evidence(baseEvidence);
AppDomain newDomain = AppDomain.CreateDomain("TestDomain", evidence, setup);
Assembly assembly = newDomain.Load(this.ReadAssembly(fullpath)); // FileNotFoundException
Code:
newDomain.Load(AssemblyName.GetAssemblyName(fullpath));
Unter dem .NET Framework 1.1 ergeben sich keinerlei Probleme. Die MSDN gibt mir auch nicht besonderes viele Informationen dazu, da selbst Microsoft in den Beispielen zum 2.0er Framework mit den obsoleten Methoden arbeitet.
Hat hier irgendjemand eine Idee woran das liegen könnte?
Danke