Hallo,
Folgendes Szenario:
In meinem "Core" Projekt hab ich eine abstrakte Klasse DataManager. In einem weiteren Projekt "DataManagement", hab ich Ausprägungen dieser abstrakten Klasse, z.b. OracleDataManager.
Meine Architektur sieht nun vor, das Assembly "DataManagemt" dynamisch zur Laufzeit aus einem bestimmten Verzeichnis zu laden. Dies mache ich mit der in diesem Dokument beschriebenen Methode.
Das Laden der Assembly "DataManagement" funktioniert. Jedoch, wenn ich danach alle Module des Assembys und deren Typen abklappere, bekomm ich bei modules.GetTypes() schon die Exception "Unable to load one or more of the requested types." (ReflectionTypeLoadException). Als LoaderException wird folgendes ausgegeben "Could not load file or assembly 'Core, Version=1.0.2764.25892, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.":"Core, Version=1.0.2764.25892, Culture=neutral, PublicKeyToken=null".
Die AppDomain, die die "Packages" enthält, sieht folgendermaßen aus:
private AppDomain CreateAppDomain(string packageDirectory)
{
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = packageDirectory;
setup.PrivateBinPath = AppDomain.CurrentDomain.BaseDirectory;
setup.ApplicationName = "Package";
setup.ShadowCopyFiles = "true";
appDomain = AppDomain.CreateDomain("Package Domain", null, setup);
return appDomain;
}
Hat jemand eine Idee?
Danke,
Adrian
Hallo adrian,
DLLs müssen im Anwendung verzeichnis, darunter oder im GAC liegen, um geladen werden zu können.
herbivore
Mit Anwendungsverzeichnis meinst du z.B. ./bin/Debug (beim Debuggen)?
Hallo adrian,
wird wohl so sein. Ich benutze kein VS. Mit Anwendungsverzeichnis meine ich das Verzeichnis, in dem die exe liegt, die gestartet wird.
herbivore
gab es nicht die möglichkeit eine config file anzulegen wo man abhängigkeiten mit definieren und pfade angeben konnte?
mfg
Zebes
Ja, gibt es:
<?xml version="1.0" standalone="yes"?>
<configuration>
<runtime>
<assemblyBinding>
<probing privatePath="Unterverzeichniss"/>
</assemblyBinding>
</runtime>
</configuration>