Запуск программы с System.Diagnostics.Process.Start вызывает ошибку приложения

На моем компьютере DWG файлы открываются с помощью:

"C:\Program Files\AutoCAD LT 2007\acadlt.exe" "%1"

Если я запускаю это из командной строки:

"C:\Program Files\AutoCAD LT 2007\acadlt.exe" "C:\Some Path\Test.dwg"

AutoCAD Lite открыть файл DWG.

Точно так же, если я открываю командную строку и запускаю тот же exe с аргументом, он работает нормально.

Однако, если я использую

var proc = new System.Diagnostics.Process();
var info = new System.Diagnostics.ProcessStartInfo();

а потом

info.FileName = "C:\Some Path\Test.dwg";
proc.StartInfo = info;
proc.Start();

или же

info.FileName = "C:\Program Files\AutoCAD LT 2007\acadlt.exe";
info.Arguments= "C:\Some Path\Test.dwg"
proc.StartInfo = info;
proc.Start();

или же

info.FileName = "cmd.exe";
info.Arguments= "C:\Program Files\AutoCAD LT 2007\acadlt.exe" "C:\Some Path\Test.dwg"
proc.StartInfo = info;
proc.Start();

Я получаю следующую ошибку:


acadlt.exe - Ошибка приложения

Инструкция в "0x01317c8c" ссылалась на память в "0x01317c8c". Память не может быть "прочитана".

Нажмите OK, чтобы завершить программу. Нажмите ОТМЕНА, чтобы отладить программу.

ОК Отмена


Между прочим, код работает нормально, если я перешагиваю код с помощью отладчика.

Кто-нибудь знает, как я могу использовать Process.Start, чтобы открыть этот DWG?

3 ответа

Решение

Оказывается, именно Xenocode Postbuild вызвал ошибку приложения. Если я запускаю тот же код на обычном.NET exe (не запутанном), он работает нормально. Я сослался на Xenocode для решения.

Убедитесь, что указана правильная рабочая папка:

info.WorkingDirectory = "same path as current directory in cmd.exe";

Одно отличие между запуском из командной строки и использованием ProcessStartInfo таким образом, последний использует исполнение оболочки. Я не думаю, что это может быть причиной этой проблемы, но может вызвать проблемы. Попробуйте добавить следующее и посмотреть, решит ли это проблему.

info.UseShellExecute = false;
Другие вопросы по тегам