Laden...

Problem beim Laden einer DLL aus einem anderen Verzeichnis

6 Antworten
3,194 Aufrufe
Letzter Beitrag: vor 18 Jahren
Problem beim Laden einer DLL aus einem anderen Verzeichnis

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>