Как указывалось ранее, (запуск исполняемого файла .Net 2.0 в . Net 4.0) У меня возникли проблемы с запуском .Net 2.0 exe из программы .Net 4.0. Я несколько решил эту программу, установив .Net 2.0. Теперь программа может корректно работать в определенных ситуациях. А именно, если я работаю с файлами исключительно в той же директории, что и моя программа. Происходит следующее:
- Пользователь выбирает файл
- .Net 2.0 exe действует на этот файл, создает новый файл
- .Net 2.0 exe действует на новый файл
Все это прекрасно работает, если исходный файл находится в том же каталоге, что и программа (и исполняемый файл .Net 2.0). Файлы, созданные исполняемым файлом 2.0, сохраняются в этом каталоге, и все в порядке. Однако, если исходный файл НЕ находится в том же каталоге, что и программа, исполняемый файл 2.0 создает новый файл в папке исходного файла. Это приводит к сбою программы, поскольку она ожидает, что новый файл будет находиться в том же каталоге, что и исполняемый файл 2.0. Стоит отметить, что это происходит только в XP с .Net 2.0 и 4.0. На моей основной машине с Windows 7, работающей под управлением .Net 4.5, этой проблемы не возникает.
Вот код, в котором я вызываю исполняемый файл 2.0:
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C 2.0EXE -i " + userFile + " -o " + resultsFile;
process.StartInfo = startInfo;
startInfo.WorkingDirectory = Environment.CurrentDirectory;
process.Start();
process.WaitForExit();
Есть ли какое-то очевидное решение, которое мне не хватает? Желательно не что-то, связанное с изменением пути, поскольку я планирую распространять это приложение и не хочу, чтобы конечный пользователь делал это.
Изменить: даже когда я заставляю рабочий каталог быть каким-то постоянным каталогом (вместо Environment.CurrentDirectory), он все равно не будет работать. Теперь он сохраняет файл в правильном месте (шаг 2), но исполняемый файл 2.0 затем ищет новый файл в той же папке, что и исходный файл (т. е. шаг 3 не выполняется). Опять же, это происходит только на машине XP с .Net 4.0 и 2.0.