Hallo zusammen,
Ich habe da ein kleines Problem mit absoluten Pfaden aus der Entwicklungszeit, die aus einem mir unbekannten Grund in meinen Assemblies verbacken sind.
Wäre eigentlich nicht so wild, nur leider stecken in den Log Files beim Kunden jetzt in den Exception Beschreibungen meine "C:\Dev..." Pfade. Das fühlt sich falsch an. 😉
Was könnte ich beim Build falsch machen?
Hallo Wax,
ohne Code schwer zu sagen. Hast du keine absoluten Pfade im Code verwendet? Auch die Referenz-Pfade nicht nicht irgendwo auf dein "C:\dev"?
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hi Coffeebean,
also auf andere Projekte innerhalb meiner Solution verlinke ich über "Add Reference -> Projects". Ich referenziere aber auch .DLLs per "Add Reference -> Browse".
Sind diese "Browse" Verweise irgendwie anders hinterlegt im Projekt?
Also im Code habe ich keine Pfade hinterlegt.
Gruß
wax
Schau mal per Texteditor in die .csproj und gucke ob da was bzgl. C:/Dev zu finden ist. Normalerweise lauten die Pfade dort "../../MeinTollesProjekt" oder ähnlich.
Das wird dann der "HintPath" (s. Common MSBuild Project Items) bei einer Assembly Referenz sein.
PS: Auch Microsoft zeigt absolute Pfade des Build-Servers bei Fehlermeldungen an: Exception Crash: "In source code file..." (DirectX Fehler).
Hallo Wax,
hast du Debug-Infos (pdb-Dateien) generiert und von dort stammen die Pfade bzw. Bezüge zur Zeilennummer?
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Dann lieferst Du wohl Dateien an den Kunden, die so nicht an einen Kunden gehen sollten 😉
Siehe auch
Why does the Stack Trace shows my development files path?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Vielen Dank an alle Beteiligten.
Es waren tatsächlich .pdb Dateien mit im Deployment.
Gruß
wax
Hallo Wax,
es ist oft sinnvoll, die PDB Dateien mit an den Kunden auszuliefern.
Wenn sie nur Zeilennummern und keinen Source Code enthalten sollen dann kann man in den Eigenschaften des Projekts einstellen :
Build / Konfiguration : Release / Erweitert
Debuginformation : Nur PDB.
Dann bekommt man bei Exceptions im Stack Trace die Zeilennummer und den Dateinamen zurück wo die Exception aufgetreten, das erleichert die Fehlersuche ungemein. Es ist allerdings der Pfad Deiner Entwicklungsumgebung dabei, das ist OK so.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Da bin ich - wie übrigens auch Microsoft - völlig andere Meinung: PDB Dateien gehören nicht ausgeliefert.
Wenn Du das verwendest um Deine Zeilen zu bekommen, dann stimmt Dein Loggingkonzept nicht.
Wenn man dann korrekterweise den Release Modus (inkl. Code Optimization) ausliefert, dann stimmen die Informationen in den PDB Dateien sowieso nicht mehr.
Der korrekte bzw. empfohlene Weg dafür ist Full Structured Logging, zB. Serilog - aber nicht PDB.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Wie sieht dann eine Fehlermeldung aus ?
Bei mir so mit Debuginfo "Nur PDB" und Code Optimieren = Ja :
Exception : Die Datei "sadad" konnte nicht gefunden werden.
Exception Stack : bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
bei QUASAR3.Mainmenu.MainMenu_Load(Object sender, EventArgs e) in .\MainMenu.cs:Zeile 354.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Hallo BerndFfm,
ich sehe das wie Abt.
Anhand deines Beispiels würde auch im Log stehen dass die Datei nicht gefunden wurde. Zusätzlich sollte der Kontext, aus dem heraus der Fehler entstand, mitgeloggt werden, so dass sich das Problem reproduzieren lässt.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"