Консольное приложение - не удается поймать необработанное исключение - PullRequest
1 голос
/ 28 ноября 2008

Я написал очень простое консольное приложение C #, которое откроет отчет Crystal Reports, обновит его и сохранит в виде PDF-файла в указанном месте.

При работе в VS2005 все работает нормально; PDF-файл генерируется как ожидалось. Когда я копирую .exe на мой корневой диск C: и запускаю его из командной строки, я получаю диалоговое окно, в котором говорится, что «CrystalGenerator перестал работать» - но файл PDF все еще генерируется! Поиск возможных причин этого диалога показывает, что произошло необработанное исключение, но все содержимое метода Main содержится в try / catch, так что это не может быть моей проблемой.

Просматривая в журнале событий, я вижу ряд записей, в которых говорится: «Не удалось найти строку подстановки для индекса вставки (% 1)», но не могу найти разумное объяснение того, что это значит.

Положительным моментом является то, что если я скопирую файл на сервер под управлением Server 2003 (где он предназначен для запуска), команда будет выполнена без ошибок - но я хочу знать, почему приложение работает неправильно в Vista и как его решить.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 25 декабря 2008

Если по какой-либо причине вы вызываете переполнение стека, он не может быть перехвачен, поскольку нет способа надежно размотать стек вызовов.

В этой ситуации ваше приложение будет работать так, как вы сказали.

1 голос
/ 28 ноября 2008

Работает ли это, если вы запускаете приложение из командной строки с повышенными правами (WinKey, затем нажмите cmd, а затем Ctrl + Shift + Return)?

Возможно, один из процессов, которые вы вызываете, требует повышения прав.

0 голосов
/ 01 декабря 2008

Ну, после долгих поисков ссылок, похоже, что это поведение «By Design»!

Собственный StackOverflows Джефф Этвуд столкнулся с проблемой ( см. Здесь ) и поднял проблему в Microsoft Connect ( см. Здесь ).

Похоже, я буду искать альтернативный подход - хотя код работает на Server 2003.

Спасибо Divo за ваши предложения, которые были очень полезны.

...