Как может быть разница в пути вывода?

Я сделал приложение, которое использует исполняемый файл другой компании для создания некоторых выходных файлов на основе вычислений, выполненных для некоторых входных файлов, которые передаются в исполняемый файл компании... Для работы исполняемого файла он будет искать эти входные файлы в том же каталоге. как расположение исполняемого файла.

Что касается выходных файлов, я обнаружил, что папка, в которую они выводятся при запуске exe из моей программы, отличается от папки, когда exe запускается в проводнике Windows.

  • Когда исполняемый файл запускается в проводнике Windows, он выводится в тот же каталог, в котором находится исполняемый файл.
  • Когда моя программа запускается (в отладке из Visual Studio), они выводятся в папку отладки

Кто-нибудь знает, как заставить мою программу выводить эти файлы в один и тот же каталог или почему это может происходить?

Я ничего не знаю о коде в этом exe, кроме того, что он был написан на Фортране.

Я запускаю exe, используя Process.Start(exeName).WaitForExit()


person Sayse    schedule 19.12.2012    source источник
comment
Когда вы запускаете его в режиме отладки, разве он не работает внутри папки отладки? Таким образом, он делает то же самое, что и запуск из проводника.   -  person Jon Taylor    schedule 19.12.2012


Ответы (4)


Вероятно, вы ищете Directory.SetCurrentDirectoty. функция.

Вызовите его перед фактическим выполнением внешней исполняемой программы. Передайте в него полный путь к папке, в которой вы хотели бы видеть выходные файлы, это может решить вашу проблему.

person Tigran    schedule 19.12.2012

Когда вы запускаете приложение, каждый раз, когда оно должно получать текущую папку в качестве контекста, я думаю, что это тот exe, который фактически использует текущую папку для вывода, запускает вашу программу и отлаживает, вызывая разницу в текущей папке. Вы можете попробовать использовать Directory.SetCurrentDirectory, чтобы установить текущую папку и посмотреть, поможет ли это

person Simon Wang    schedule 19.12.2012

Попробуйте явно установить рабочий каталог в каталог где оба приложения.

person Bali C    schedule 19.12.2012

Если вы не хотите устанавливать рабочий каталог для своего приложения C#, а только для запущенной программы, используйте свойство Process.StartInfo.WorkingDirectory.

Пример:

var process = new Process();
var startInfo = new ProcessStartInfo("myProgram.exe");
startInfo.WorkingDirectory = "myDirectory";
process.StartInfo = startInfo;
process.Start();
person Mir    schedule 19.12.2012