Запуск программы с 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;