2016-04-12 17 views
1

Wie kann ich eine .NET-EXE bereitstellen, aber die pdb-Datei trotzdem an einem anderen Speicherort verwenden? Ich bin besorgt, es mit der exe an der gleichen Stelle zu halten könnte dazu führen, dass Endbenutzer versehentlich die pdb löschen. Wir möchten jedoch die Fehlerdetails (z. B. Modul, Zeilennummer) sehen, wenn ein Fehler vom Benutzer festgestellt wird. Wenn es eine andere Möglichkeit gibt, diese Informationen ohne die PDB zu erhalten, lassen Sie es mich wissen. Danke im Voraus!Bereitstellen von .exe an einem anderen Speicherort als .pdb

Antwort

0

This answer beschreibt einen Weg, um diese Informationen ohne die PDB mit ein bisschen Bauzeit Vorbereitung zu bekommen.

Ich würde vorschlagen, dass die Benutzer nicht haben Löschen Rechte an den Ordner, wo Sie Ihre Anwendung installieren (zB: Programme?) Wenn sie dies tun, oder wenn sie Administratoren sind, hält nichts davon ab Löschen pdb oder exe's für diese Angelegenheit.

+0

leider haben sie Lese-/Schreibzugriff und das nicht in der Lage sein, zu ändern. Ich weiß, dass die Dateien von einer sicheren Kopie zurückgeholt werden können, aber wir möchten, dass die .pdb nicht für die Endbenutzer sichtbar ist, wenn möglich, um Verwirrung zu vermeiden. – Kathryn

1

Sie können dies tun, indem Sie die Umgebungsvariable _NT_SYMBOL_PATH beim Start Ihrer Anwendung setzen. Bei der Suche nach Debugsymbolen wird der Pfad bei dieser Umgebungsvariablen (falls vorhanden) auf PDB-Dateien überprüft. Legen Sie Ihre Symbole in einigen Ordner (sagen wir mal, dass ist „% localappdata% \ MyApp \ Symbols“), dann tun:

var symbolsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MyApp", "Symbols"); 
Environment.SetEnvironmentVariable("_NT_SYMBOL_PATH", symbolsPath); 
+0

das hat funktioniert. ich danke dir sehr! – Kathryn