DLL aus Unterordner referenzieren

14/04/2008 - 20:29 von Michael Dieter Schöppe | Report spam
Dies ist eine mehrteilige Nachricht im MIME-Format.

=_NextPart_000_0008_01C89E6E.2CD33710

Hallo zusammen,
ich habe folgendes Problem:
Ich möchte ein Programm schreiben dessen DLL-Dateien sich in diversen Unterordnern des Hauptverzeichnisses des Programms befinden.
Kompilieren tu ich übrigens per Kommandozeile direkt mit csc.exe und das werde ich auch weiterhin so tun.
Wenn sich die DLL's im selben Verzeichnis befinden wie das Hauptprogramm dann kann ich diese mittels der Compiler-Option
/r:irgendeine.dll
ohne weiteres referenzieren und auch in meinem Hauptprogramm verwenden. Befinden sich die DLL's aber in einem Unterordner, so kann ich diese zwar auch referenzieren (so scheint es jedenfalls) ohne beim kompilieren eine Fehlermeldung oder Warnung zu bekommen, doch zur Laufzeit erscheint folgende Fehlermeldung:

Unbehandelte Ausnahme: System.IO.FileNotFoundException: Die Datei oder Assembly
irgendeine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null oder eine Abhà
ngigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht
finden.

Woran kann das liegen? Was kann ich tun? Ich stelle mir vor das es wahrscheinlich nur irgendeine ganz banale Sache ist die ich übersehen hab oder so. Schön wàr's zumindest.
Ich hoffe mir kann da jemand helfen.
Danke im voraus.

Michael





=_NextPart_000_0008_01C89E6E.2CD33710

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content=text/html;charset=iso-8859-1>
<META content="MSHTML 6.00.6000.16640" name=GENERATOR></HEAD>
<BODY id=MailContainerBody
style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-TOP: 15px"
bgColor=#ffffff leftMargin=0 topMargin=0 CanvasTabStop="true"
name="Compose message area">
<DIV><FONT face=Verdana size=2>Hallo zusammen,</FONT></DIV>
<DIV><FONT face=Verdana size=2>ich habe folgendes Problem:</FONT></DIV>
<DIV><FONT face=Verdana size=2>Ich möchte ein Programm schreiben dessen
DLL-Dateien sich in diversen Unterordnern des Hauptverzeichnisses&nbsp;des
Programms&nbsp;befinden.</FONT></DIV>
<DIV>Kompilieren<FONT face=Verdana size=2> tu ich übrigens per Kommandozeile
direkt mit csc.exe und das werde ich auch weiterhin so tun.</FONT></DIV>
<DIV><FONT face=Verdana size=2>Wenn sich die DLL's im selben Verzeichnis
befinden wie das Hauptprogramm dann kann ich diese mittels der
Compiler-Option</FONT></DIV>
<DIV><FONT face=Verdana size=2>/r:irgendeine.dll </FONT></DIV>
<DIV><FONT face=Verdana size=2>ohne weiteres referenzieren und auch in meinem
Hauptprogramm verwenden. Befinden sich die DLL's aber in einem Unterordner, so
kann ich diese zwar auch referenzieren (so scheint es jedenfalls) ohne beim
kompilieren eine Fehlermeldung oder Warnung zu bekommen, doch zur Laufzeit
erscheint folgende Fehlermeldung:</FONT></DIV>
<DIV><FONT face=Verdana size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Verdana size=2>Unbehandelte Ausnahme:
System.IO.FileNotFoundException: Die Datei oder Assembly<BR><FONT
color=#800000>irgendeine</FONT>, Version=0.0.0.0, Culture=neutral,
PublicKeyToken=null oder eine Abhà<BR>ngigkeit davon wurde nicht gefunden. Das
System kann die angegebene Datei nicht<BR>finden.</FONT></DIV>
<DIV><FONT face=Verdana size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Verdana size=2>Woran kann das liegen? Was kann ich tun? Ich
stelle mir vor das es wahrscheinlich nur irgendeine ganz banale Sache ist die
ich übersehen hab oder so. Schön wàr's zumindest.</FONT></DIV>
<DIV><FONT face=Verdana size=2>Ich hoffe mir kann da jemand helfen.</FONT></DIV>
<DIV><FONT face=Verdana size=2>Danke im voraus.</FONT></DIV>
<DIV><FONT face=Verdana size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Verdana size=2>Michael</FONT></DIV>
<DIV><FONT face=Verdana size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Verdana size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Verdana size=2>&nbsp;</DIV>
<DIV><BR></DIV></FONT></BODY></HTML>

=_NextPart_000_0008_01C89E6E.2CD33710--
 

Lesen sie die antworten

#1 Elmar Boye
16/04/2008 - 12:05 | Warnen spam
Michael Dieter Schöppe schrieb:
Ich möchte ein Programm schreiben dessen DLL-Dateien sich in diversen
Unterordnern des Hauptverzeichnisses des Programms befinden.



Dazu solltest Du Dir durchlesen:
<URL:http://msdn2.microsoft.com/de-de/li...f.aspx>
"So sucht Common Language Runtime nach Assemblys"

Kompilieren tu ich übrigens per Kommandozeile direkt mit csc.exe und das
werde ich auch weiterhin so tun.



Darfst Du gerne. Mit MSBuild ist das aber einfacher, wenn die Zahl
der Dateien und Abhàngigkeiten steigt (das ist der Nachfolger von make,
wenn Dir das was sagt):
<URL:http://msdn2.microsoft.com/de-de/li...d.aspx>

Wenn sich die DLL's im selben Verzeichnis befinden wie das Hauptprogramm
dann kann ich diese mittels der Compiler-Option
/r:irgendeine.dll



Der Compiler verwendet das nur als Referenz, die spàtere
Laufzeit-Assembly kann aber z. B. auch im GAC liegen.

ohne weiteres referenzieren und auch in meinem Hauptprogramm verwenden.
Befinden sich die DLL's aber in einem Unterordner,



Unterordner werden nur durchsucht, wenn Du eine privatePath Angabe verwendest
<URL:http://msdn2.microsoft.com/de-de/li...w.aspx>
Sofern nicht eine der anderen Angaben greift, die oben beschrieben werden,
beachte dazu den Hinweis in
"Schritt 4: Suchen der Assembly mit CodeBases oder durch Sondierung"

Gruß Elmar

Ähnliche fragen