| 

.NET C# Java Javascript Exception

3
Hallo,
wie kann ich eine C# - Applikation (Basis WPF) so erstellen, dass zur Laufzeit bestimmte DLL´s in einem zum Verzeichnis der Applikation relativen Verzeichnis gefunden werden können? Anders ausgedrückt: Was ich nicht möchte, ist die zu verwendenden DLL´s in das selbe Verzeichnis, in dem die Applikation selbst liegt, legen, sondern zwei Verzeichnisebenen darunter.
Die Applikation myApp liegt also in blabla\appDir und die DLL´s liegen in blabla\appDir\relEbene1\relEbene2.
Wenn die Applikation und die DLL´s im selben Verzeichnis liegen, funktioniert natürlich alles einwandfrei. Leider kann ich es so aber nicht realisieren, da ich aufgrund besonderer Umstände diesen Weg wählen muss (Begründung würde zu weit führen).
Für jede Hilfe wäre ich sehr dankbar!!
Grüße, Ralf
News:
05.08.2013
Ralf_x 23 1 4
3 Antworten
1
Folgende Themen befassen sich mit den Verweispfaden für Assemblies:
  • Assemblys in anderen Verzeichnissen ansprechen
  • C# - Verweispfade (private binpath) relativ setzen
  • 06.08.2013
    Andreas_mod 1,2k 1 2 7
    1
    Hallo Luedi,

    sorry, hatte ich vergessen: bei dem Artikel handelt es sich um
    http://www.chilkatsoft.com/p/p_502.asp

    Allerdings gibt es dabei ein Problem: Diese Variante funktioniert nur bedingt.

    Tritt eine FileNotFoundException auf, für die die eigene Applikation keine Referenzierung bereit stellt, wird die LoadFrom - Routine mit einem ungültigen, d.h. leeren String aufgerufen und stürzt ab.
    Gegenwärtig habe ich zwei unterschiedliche Effekte A und B, wobei Effekt A auf Rechner RA und B auf Rechner RB auftritt. RA ist der Entwicklungsrechner mit komplett installiertem .NET 4.0 und VisualStudio 2010, SDK, etc. Rechner RB verfügt nur über .NET 4.0. Beide Rechner verfügen über die DLL´s in der selben Verueichnisstruktur, für die auch die oben genannte Routine auf Rechner RA gut funktioniert. Starte ich die Anwendung aber auf RB, funktioniert die Strategie nicht. Gleich beim Start reagiert die Anwendung auf eine FileNotFound - Exception, für die sie jedoch keine Auflösung liefern kann und stürzt ab. Deaktiviere ich den oben genannte Exception-Handler, startet die Anwendung und läuft bis zu dem Punkt, an dem ich die referenzierten DLL´s benötige.
    Nun habe ich die RB- Variante etwas genauer untersucht und festgestellt, dass nacheinander zwei Ausnahmen von der mscorlib ausgelöst werden, einmal bei dem Veruch WindowsBase.resources anzubinden, einmal bei der Suche nach mscorlib.resources.
    Deaktiviere ich meinen Eventhandler, kann das Framework das Problem selbst lösen, die Anwendung startet normal und läuft bis zum Zeitpunkt des Aufrufs der "Problem-Dll´s".
    Lasse ich den Eventhandler aktiv, kann dieser keine sinnvolle Rückgabe machen, da ich nicht vorhersehen kann, wo die angeforderten Resourcen zu finden sind.

    Nunn frage ich mich, wie ich den Eventhandler so umgestalten kann, dass er nur für die von der Anwendung referenzierten "Problem-DLL´s" eine Rückgabe liefern muss, in allen anderen Fällen das Problem aber wieder an das Framework zurück gibt, welches ja offensichtlich selbst damit klar kommen kann, wie ja auch für den Fall, dass die Anwendung selbst keinen Eventhandler implementiert.

    Mal sehen, vielleicht helfen die Antworten der Mitglieder weiter.

    Vielen Dank dafür und Grüße, Ralf


    Ein paar Stunden später: Lösung gefunden. In die app.config mittels
    <probing privatePath="subpfad1\subpfad2"/> den relativen Pfad zum Laufzeit-Assembly eintragen funktioniert. Der config-file muss dabei zur Laufzeit im selben Verzeichnis stehen wie die Applikation.

    Danke für Euere Hilfe und Grüße
    06.08.2013
    Ralf_x 23 1 4
    0
    Hallo Forum,

    Dank eines Beitrags aus diesem Forum ist es mir gelungen das Problem zu lösen.

    Danke und Grüsse

    Ralf
    05.08.2013
    Ralf_x 23 1 4
    Es wäre schön, wenn du den Beitrag verlinken würdest. Dann müssten andere Nutzer des Forums, die auf deinen Beitrag stoßen, diesen nicht selbst suchen.
    luedi 06.08.2013

    Stelle deine .net-Frage jetzt!
    TOP TECHNOLOGIES CONSULTING GmbH