2010-08-27 3 views
6

Ich bin zur Zeit Bug-Jagd und muss in einer bestimmten DLL in der Release-Konfiguration in Visual Studio 2005 debuggen. Irgendwann schloss ich die Lösung, tat etwas anderes und lud es neu. Von diesem Punkt an wird mein Haltepunkt nicht mehr getroffen und ich bekomme die berüchtigte Meldung "Keine Symbole wurden geladen ...". Also habe ich das Modulfenster geöffnet und die DLL, die ich debuggen möchte, erscheint nicht mehr in der Liste, deshalb kann ich Symbole nicht manuell laden. Die Anwendung verhält sich normal, also bin ich mir absolut sicher, dass die DLL geladen sein muss, um bestimmte Funktionen auszuführen. Sicher genug, wenn ich die DLL umbenenne und die Anwendung starte, funktioniert es nicht mehr, also muss es auch die richtige DLL sein.Warum fehlt die geladene DLL in der Modulliste von Visual Studio?

Ich habe versucht, die Dll-Projekt als Startprojekt und den Befehl, um die Anwendung exe und starten Sie die Anwendung von außen Visual Studio und dann an den Prozess, alles ohne Erfolg.

Frage ist, warum die DLL nicht in der Liste der geladenen Module erscheint, obwohl es geladen worden sein muss? Ich kann mir keine anderen Änderungen vorstellen, die ich gemacht habe, die das verursachen könnten, vermisse ich etwas? (Vielleicht etwas wirklich offensichtlich?)

Jede Hilfe geschätzt!

Antwort

1

Ich stieß auf ein ähnliches Problem nach dem Übertragen eines Projekts von einem Computer zu einem anderen. Ich werde einfach erklären, was ich entdeckte und , wie ich es behoben, und Sie können feststellen, ob es Ihr Problem und Ihre Lösung passt.

  1. Der Arbeitscomputer, auf den ich eine Anwendung geschrieben habe, enthielt eine .dll-Datei, auf die sich mein Programm bezog. Nachdem die Anwendung auf den Computer zu Hause verschoben wurde, konnte die Anwendung die DLL-Datei, auf die zuvor verwiesen wurde, nicht mehr finden, da die Datei nicht mehr vorhanden war.

  2. Die Anwendung kompiliert und lief sogar ohne die referenzierte Ressource (DLL-Datei), da die zuvor kompilierte Assembly (Debug-Ordner) eine eigene Kopie der DLL-Datei und andere Ressourcen enthielt. Einfach gesagt, es ist der alte Assembly-Build und nicht die aktuelle Anwendung, an der Sie gerade arbeiten. Dies ist auch der Grund, warum dieser Fehler dazu führt, dass das Designerfenster angehalten wird und ein Fehler ausgegeben wird, nachdem die App ausgeführt wurde.

Ich möchte einen Blick auf die folgenden nehmen:

a) Unter Lösung Explorer, gehen in die Referenzen Ordner und rechts klicken Sie auf die fehlenden Referenzknoten und wählen Eigenschaften. Beobachten Sie in dem Eigenschaftenfeld den Pfad der Ressource, auf die verwiesen wird. Befindet sich die Ressource noch auf diesem Pfad?

b) Überprüfen Sie den Debug-Ordner für eine Kopie der Ressource, die Sie suchen. Wenn die Ressource dort ist, erstellen Sie eine Kopie und speichern Sie sie auf Ihrem Desktop. Wenn es nicht gibt, erhalten Sie die Datei von der ursprünglichen Quelle.

c) Unter Mappen-Explorer der rechten Maustaste 'Eigenschaften' und 'offen'. Aus dem angezeigten Menü wählen Sie 'Resources' von links und oben im neuen Fenster, das erscheint, sollten Sie 'Resource' mit einem kleinen Dropdown-Pfeil sehen. Klicken Sie auf den Pfeil und wählen Sie 'Bestehende Datei hinzufügen' und dann Durchsuchen Sie die Datei. Wenn Sie es nicht sehen, müssen Sie möglicherweise die zu durchsuchende Datei aus dem kleinen Dropdown über den Schaltflächen "Öffnen" und "Abbrechen" ändern. Nachdem die Datei gefunden wurde, sollte im Lösungs-Explorer ein neuer Ordner namens 'Ressourcen' erstellt werden. Jetzt ist die Datei ein fester Bestandteil Ihrer Bewerbung und nicht nur eine Referenz darauf.

1

Ich hatte das gleiche Problem heute mit Visual Studio 2008. Ich war einen einfachen Tester mit einer neuen Methode in einer Baugruppe zu testen. Also fügte ich einen Verweis auf meine Assembly hinzu Ich schrieb den Code, um die Assembly zu laden und die neue Methode aufzurufen, Build, alles OK. Aber während der Ausführung würde der Debugger eine Ausnahme auslösen, die besagt, dass keine neue neue Methode existiert und das Modulfenster leer war.

Stellt sich heraus, dass die Assembly, die ich änderte, in der GAC war, und statt des neuen in meinem Build-Verzeichnis verwendet wurde.

Verwandte Themen