Этот вопрос уже имеет ответ здесь:
Я в настоящее время разрабатываю приложение C#, которое имеет свой собственный вход. Когда исключения выдаются, исключение сохраняется в список, который может быть просмотрен пользователем через представление списка. Когда пользователь нажимает на исключение в представлении списка, отслеживание стека исключения показывают в текстовом поле. Но даже когда я выполняю программу на удаленной машине, отслеживание стека показывает пути к файлам к файлам первоисточника от машины, где приложение было скомпилировано.
например:
at C:\Folder1\Folder2\Class1.cs:81
at C:\Folder1\Folder2\Class2.cs:65
at C:\Folder1\Folder1\Class3.cs:21
Только отображение исходных файлов без папок было бы хорошо...
Как я могу изменить это поведение?
Есть ли какое-либо встроенное решение? Или я должен просто сделать некоторую обработку строк?
У вас, вероятно, есть файлы .pdb с установленным приложением. Без файлов .pdb не должен отображать местоположения файлов.
Посмотрите на Получение номеров линии в отслеживании стека исключения в службе Windows
и включают номера строк в трассе стека без PDB?
Вы не можете получить трассировку стека Числа непосредственно из вашего приложения Если вы не связываете PDB.
Пути к файлам включены в "программную базу данных" (.pdb). Такие файлы создаются при компиляции и пути в них такие же, как и на машине компиляции.
Вы можете удалить .pdb файлы из вашей инсталляции, но в этом случае трассировка стека будет наполовину менее интересной, так как она не скажет вам строку, на которой произошла ошибка. Обычно вы не запускаете код в производственной среде с прикрепленными Pdb файлами.
Если вы хотите сохранить "интересную трассу стека", вы можете подумать о замене имен папок на строки после вызова exceptionObject.toString()
.