Visual Studio - Quellcode an Referenz anhängen

75

Mein C # -Projekt verweist auf eine DLL eines Drittanbieters, für die ich den Quellcode habe. Kann ich Visual Studio irgendwie den Speicherort dieses Quellcodes mitteilen, sodass beispielsweise beim Drücken F12der Taste zum Öffnen der Definition einer Methode in der DLL der Quellcode geöffnet wird, anstatt die "Klasse [von" zu öffnen Metadaten] "Stub-Code?

Joe Daley
quelle
1
Siehe doppelte Frage: stackoverflow.com/questions/5368423/…
Scott Stafford

Antworten:

28

Wenn Sie ReSharper verwenden , können Sie es aktivieren, indem Sie zu ReSharper / Optionen / Externe Quellen gehen und "Quellen aus Symboldateien" nach oben verschieben. Klicken Sie dann auf der Registerkarte "Quellen aus Symboldateien" auf "Erweitert" und dort können Sie Quellordner zuordnen.

Cesar Reyes
quelle
16
Was ist der 'Zielordner' für diesen Dialog? Ich habe nur eine DLL und einen Ordner mit Quellen, die ich zu Navigationszwecken anhängen möchte.
Iain
24

Die Antwort befindet sich anscheinend am Ende dieser MSDN-Dokumentationsseite .

Der Debugger sucht an folgenden Stellen nach Quelldateien:

  1. Dateien, die in der IDE der Visual Studio-Instanz geöffnet sind, die den Debugger gestartet hat.

  2. Dateien in der Lösung, die in der VS-Instanz geöffnet ist.

  3. Verzeichnisse, die auf der Seite "Allgemeine Eigenschaften" / "Quelldateien debuggen" in den Eigenschaften der Lösung angegeben sind.

  4. Die Quellinformationen der .pdb des Moduls. Dies kann der Speicherort der Quelldatei sein, als das Modul erstellt wurde, oder es kann ein Befehl an einen Quellserver sein.

So fügen Sie der Seite Debug-Quelldateien der Lösung ein Verzeichnis hinzu (Schritt 3. oben):

Sie können ein Netzwerk oder lokale Verzeichnisse angeben, um nach Quelldateien zu suchen.

  1. Wählen Sie die Lösung im Projektmappen-Explorer aus und wählen Sie dann "Eigenschaften" aus dem Kontextmenü (dh klicken Sie mit der rechten Maustaste auf das Kontextmenü).

  2. Wählen Sie unter dem Knoten "Allgemeine Eigenschaften" die Option "Quelldateien debuggen".

  3. Klicken Sie auf das Ordnersymbol. Bearbeitbarer Text wird in der Liste "Verzeichnisse mit Quellcode" angezeigt.

  4. Fügen Sie den Pfad hinzu, den Sie suchen möchten.

Beachten Sie, dass nur das angegebene Verzeichnis durchsucht wird. Sie müssen Einträge für alle Unterverzeichnisse hinzufügen, die Sie durchsuchen möchten.

Wenn Sie also eine bestimmte Datei nur einmal debuggen möchten, ohne Ihre Lösung zu überladen, öffnen Sie diese Datei einfach in der Visual Studio-IDE. Wenn Sie von dieser Datei in eine andere wechseln müssen, müssen die anderen Dateien wahrscheinlich auch in Visual Studio geöffnet sein.

Wenn Sie häufig Quelldateien außerhalb Ihrer Lösung debuggen müssen, können Sie entweder:

  1. Fügen Sie die Quelldateien zu einem Ihrer vorhandenen Projekte in der Lösung hinzu oder erstellen Sie ein neues Projekt in der Lösung, um die Quelldateien aufzunehmen. Dies wird Ihre Lösung / Ihr Projekt überladen, aber da es in der Quellcodeverwaltung eingecheckt wird, können alle Teammitglieder automatisch in den Quelldateien debuggen.
  2. Fügen Sie die Verzeichnisse mit dem Quellcode zu den "Debug-Quelldateien" der Lösung hinzu. Da diese Änderung nicht in der Quellcodeverwaltung aktiviert ist, muss jedes Teammitglied, das die Quelldateien debuggen möchte, dies tun und seine lokalen Pfade hinzufügen. Wenn Sie den Lösungscode auf einem anderen Computer erhalten, müssen Sie daran denken, diesen Schritt erneut auszuführen.
tödlicher Hund
quelle
5
Leider funktioniert dies nur, wenn Sie ein laufendes Programm debuggen , das die Assembly verwendet. Was Joe suchte, ist eine Möglichkeit, die Code-Navigation (z. B. Definition, Verwendung usw.) in der IDE durchzuführen, ohne den Code auszuführen. Wenn ReSharper dieses Problem gelöst hat, großartig. Ich hoffe, dass in neueren Versionen von Visual Studio auch diese Funktionen integriert sind. Ich kann sie jedoch nicht finden. Weiß jemand Bescheid?
Minyu
2
Resharper ist der einzige Weg, den ich finden kann, der dies tut. Ich bin erstaunt über die Tatsache, dass Visual Studio 2015 Enterprise (eine so teure Software) eine so einfache Funktion nicht unterstützt, die in IDEs der Enterprise-Klasse wie Eclipse, einem kostenlosen OpenSource-Teil von, nur ein nachträglicher Einfall ist Software.
Netlander
@netlander können Sie Anweisungen dazu mit ReSharper geben?.
Jaime Hablutzel
9

Eine Möglichkeit, dies zu tun, besteht darin, ein anderes Projekt in Ihrer Lösung zu erstellen, die DLL-Quelle dort einzufügen und dann aus Ihrem Hauptprojekt die Abhängigkeit als Projektreferenz anstelle einer Assemblyreferenz hinzuzufügen. Damit sollten Sie die Quelle durchsuchen / beim Debuggen usw. darauf zugreifen können.

Es gibt vielleicht einen einfacheren Weg, aber mir sind derzeit keine bekannt.

Zaman
quelle
11
Es bringt die Lösung ein wenig durcheinander und bedeutet, dass ich die DLLs von Drittanbietern selbst kompiliere, was sich etwas seltsam / langsamer anfühlt. Ich hatte gehofft, dass Visual Studio beim Verweisen auf eine JAR-Datei die Eclipse-Option "Quelle anhängen" entspricht.
Joe Daley
1
Ja, ich weiß, dass es nicht ideal ist. Wenn jemand anderes eine bessere Lösung hat, würde mich interessieren, mich selbst zu kennen.
Zaman
1
Resharper ist der einzige Weg, wie ich dies zum Laufen bringen kann, siehe meinen Kommentar oben.
Netlander