2016-07-13 12 views
7

Ich versuche, eine Web-API mit ASP.NET Core auf OS X zu erstellen. Ich habe meine Umgebung richtig eingerichtet (ich denke) und ich bin in der Lage zu bauen und zu laufen Meine Anwendung mit dotnet build aus dem Terminal, und ich bin in der Lage, das Debuggen von Visual Studio Code mit Breakpoints zu starten, die wie erwartet funktionieren. Mein Problem ist, dass ich einen Fehler erhalte, wenn ich versuche, meine Sqlite-Datenbank mit EF Core abzufragen. EF-Kern ist hier nicht wirklich wichtig, denn wenn ich debugge und versuche herauszufinden, was der Fehler ist, bekomme ich keine Stack-Trace. Als ich Schritt über den fehlerhaften Code, um die Debug-Konsole druckt:Visual Studio Code lädt keine Symbole unter OS X

Exception thrown: 'System.InvalidOperationException' in Microsoft.EntityFrameworkCore.dll 
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Diagnostics.StackTrace.dll'. Cannot find or open the symbol file. 
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Reflection.Metadata.dll'. Cannot find or open the symbol file. 
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.IO.MemoryMappedFiles.dll'. Cannot find or open the symbol file. 
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.IO.UnmanagedMemoryStream.dll'. Cannot find or open the symbol file. 

Viele dieser Cannot find or open the symbol file. sind auch beim Start gedruckt. Ich habe überprüft, dass die Dateien an der angegebenen Stelle sind, und dass es kein Lesezugriffsproblem geben sollte (gegen Code mit sudo code . gestartet und sogar eine sudo chmod 777 * in dem fraglichen Ordner getan).

Also, irgendwelche Ideen, warum die Symbole nicht geladen sind?

+0

Es klingt, als ob Sie Visual Studio Code und/oder .NET Core nicht korrekt installiert haben. Können Sie Ihren Post bearbeiten, um die Schritte zu beschreiben, die Sie zur Installation verwendet haben? Du hättest den chmod überhaupt nicht brauchen sollen. (Ich liefere VSCode auf OSX seit einiger Zeit glücklich.) – JasCav

+0

Standard-Installation mit Homebrew wie hier beschrieben: https://www.microsoft.com/net/core#macos. VS-Code installiert mit Standard-Installer. Das sudo und chmod waren nur Aufnahmen im Dunkeln, ich nahm an, dass der Speicherort der pdb-Dateien durch den laufenden Prozess oder etwas Ähnliches nicht erreichbar war. – Erik

+0

Ich folgte den gleichen Anweisungen (OSX) und habe genau das gleiche Problem. Ich möchte nicht jedes Mal, wenn ich debugge, auf eine Wand von Warnungen schauen. –

Antwort

0

Ich denke, Sie haben verwirrt, was VSCode sagt, es kann nicht geladen werden. Es besagt nicht, dass es die DLL nicht laden kann. 'Symbol'-Dateien haben die Erweiterung .PDB. Um einen von einer DLL generierten Fehler zu debuggen, benötigt ein Debugger die entsprechende Symboldatei. Wenn die PDB-Datei nicht vorhanden ist, wird der Fehler durch das Ändern der Berechtigungen für die DLL nicht behoben.

Ich habe gerade angefangen mit VSCode auf einem Mac und von was ich sehen kann, erhalten Sie nicht die PDB-Dateien, wenn Sie Dotnet-Core mit Homebrew installieren (was sie empfehlen) und ich sehe ähnliche Nachrichten, wenn ich starte den Debugger. Das hindert mich nicht daran, meinen eigenen Code zu debuggen, da eine PDB-Datei mit meiner DLL erzeugt wird. Es würde nur ein Problem verursachen, wenn Sie etwas, das im dotnet-Kern selbst schief gehen würde, etwas falsch machen müssten.

+0

Gleiches Szenario, aber VSCode ist immer noch nicht in der Lage, den Code der installierten Pakete zu durchlaufen, z. Nancy, EF usw. Ich kann nur meinen Code und alle anderen Anweisungen in der Stack-Ablaufverfolgung "No name" sehen. Irgendwelche Hinweise? –

+0

Ich glaube nicht, dass ich verwirrt bin :) Wenn die DLLs nicht geladen würden, würde der Prozess viel schneller abstürzen und brennen. Ich bin in der Lage zu debuggen, Breakpoints zu setzen und Code zu durchlaufen, wie ich in der Frage angegeben habe. Wenn das Ausgabefenster den Stack-Trace ausgeben soll, kann es die benötigten Symbole nicht finden. – Erik

+0

@Erik Ich habe das gleiche Problem. Was war deine Lösung? Installieren Sie Symbole mit einer anderen Installationsmethode? –

4

In den gleichen Problemen lief VS Code auf einem Windows 10 VM.

Die Auflösung, die ich fand, war, eine "debugType": "portable" Einstellung zu dem buildOptions Abschnitt meiner project.json Datei hinzuzufügen.

-Mine sieht wie folgt aus:

"buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true, 
    "debugType": "portable" 
} 

Debuggen in VS-Code eigentlich gar nicht so schlecht ist.

+0

Hey, das hat funktioniert! Und du hast Recht, es ist überhaupt kein schlechter Debugger. – joshmcode

+0

Dies geschieht scheinbar standardmäßig für OSX und Linux entsprechend: https://docs.microsoft.com/nb-no/dotnet/articles/core/tutorials/using-on-macos – Erik

+5

Dies ist bereits der Standard ab jetzt 1.1. Immer noch das gleiche Problem. –