Verweis-Dll FileNotFoundException noch vor Erreichen des Einstiegspunkts

  • C#

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von TRiViUM.

    Verweis-Dll FileNotFoundException noch vor Erreichen des Einstiegspunkts

    Guten Morgen liebe Community,

    ich habe ein seltsames Verhalten meiner Projektmappe entdeckt, was ich so noch nie beobachten konnte.
    Meine Projektmappe besteht aus ca. 10 Projekten, wo einzelne Projekte untereinander (Projekt-) Verweise zueinander haben.

    Damit nun nicht 10 Dlls im Exe-Verzeichnis herumliegen, habe ich neben der Exe ein "bin"-Verzeichnis erstellt und folgenden Code hinzugefügt:

    C#-Quellcode

    1. AppDomain.CurrentDomain.AppendPrivatePath("bin"); // veraltet


    Dort habe ich dann alle Verweis-Dlls hinkopiert.
    Soweit - so gut.


    Jetzt gibt es allerdings scheinbar ein Projekt in dieser Projektmappe, was nicht damit funktioniert.
    Da hilft dann eigentlich nur noch folgendes:

    C#-Quellcode

    1. AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;


    Und im dazugehörigen Event:

    C#-Quellcode

    1. private static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    2. {
    3. var assemblyPath = $"bin\\{new AssemblyName(args.Name).Name}.dll";
    4. if (!File.Exists(assemblyPath) ) return null;
    5. else return Assembly.Load(File.ReadAllBytes(assemblyPath));
    6. }


    Leider funktioniert auch das nicht...
    Und bei genauerer Analyse kommt die Anwendung noch nicht mal zum Haupt-Einstiegspunkt ?(

    Das bedeutet, das Event CurrentDomain_AssemblyResolve wurde zu diesem Zeitpunkt noch nicht aboniert.
    Über der Main meiner Anwendung werden ganz oben einige statische Variablen angelegt, die auch noch durch Haltepunkte erreicht werden können.
    Sobald die Initialisierung dieser Variablen durch ist und ich per Einzelschritt weiter debuggen möchte, kommt direkt die Exception:

    C#-Quellcode

    1. System.IO.FileNotFoundException: "Die Datei oder Assembly "AppUi, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden."


    Das problematische Projekt beinhaltet keine Projektverweise.
    Und wie der Name erahnen lässt, befinden sich in diesem Projekt AppUi Steuerelemente, welche in der Anwendung verwendung finden.

    Hat jemand von Euch hierfür eine Erklärung?

    Vielen Dank für die Unterstützung:saint:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TRiViUM“ ()

    @TRiViUM Probier mal, den Sub-Pfad direkt in die App.config einzutragen:

    XML-Quellcode

    1. <?xml version="1.0"?>
    2. <configuration>
    3. <runtime>
    4. <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    5. <probing privatePath="XYZ"/>
    6. </assemblyBinding>
    7. </runtime>
    8. </configuration>
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Bei static-Deklarationen und/oder Zuweisungen etc. kann durchaus die Reihenfolge, also wo etwas im Dokument steht (davor oder danach), relevant und für scheinbar ungewöhliches Verhalten verantwortlich sein. Viele Projekte in eine Projektmappe zusammenpacken, wo dann Visual Studio möglicherweise etwas durcheinanderwürfeln könnte, ist natürlich ein anderes, langes Thema – bei mir gibt es immer nur ein Projekt pro Projektmappe.
    Das gleichzeitige Erscheinen von Dummheit und Unmündigkeit nach Immanuel Kant ist eines der schlimmsten Dinge, die einem Homo sapiens in geistiger Hinsicht widerfahren können, hat manchmal aber auch durchaus seine Vorteile.
    @Gregor Jasinski Also grundsätzlich habe ich so ein Problem noch nie beobachtet, und ich habe schon öfter mal mehrere Projekte in einer Projektmappe u.A. auch mit statischen Variablen...
    Evtl. Zufall, aber wie auch immer...ich probiere, sollte ich so ein Verhalten noch mal beobachten, mal die Projekte zu separieren...

    TRiViUM schrieb:

    (...) mehrere Projekte in einer Projektmappe u.A. auch mit statischen Variablen (...)

    Das sind eigentlich zwei verschiedene Aspekte, die ich hier erwähnt habe - d.h. die Problematik mit statischen Deklarationen hat nichts mit dem Packen von Projekten in eine Projektmappe zu tun.
    Das gleichzeitige Erscheinen von Dummheit und Unmündigkeit nach Immanuel Kant ist eines der schlimmsten Dinge, die einem Homo sapiens in geistiger Hinsicht widerfahren können, hat manchmal aber auch durchaus seine Vorteile.
    Übrigens habe ich dann doch rausfinden können, woran es gelegen hat:
    Ich habe in der Main ein Aufruf einer Form, die in dem Projekt, auf das verwiesen wurde, liegt.
    Scheinbar erledigt das Framework erstmal einige Dinge (prüfen, ob alle Typen, die in der Main benötigt werden, auch geladen wurden), bevor die Anwendung zum Einstiegspunkt gelangt.
    Da dies dann nicht der fall war, startet meine Anwendung gar nicht erst.

    Das Entfernen dieser besagten Form behob dann das Problem...