1

如前所述,(在 .Net 4.0 程序中运行 .Net 2.0 可执行文件)我在从 .Net 4.0 程序运行 .Net 2.0 exe 时遇到问题。我通过安装.Net 2.0 解决了这个程序。现在程序可以在某些情况下正常运行。也就是说,如果我只使用与我的程序位于同一目录中的文件。会发生以下情况:

  1. 用户选择文件
  2. .Net 2.0 exe 作用于该文件,创建一个新文件
  3. .Net 2.0 exe 作用于新文件

如果原始文件与程序(和.Net 2.0 exe)位于同一目录中,这一切都可以正常工作。2.0 exe 创建的文件保存在该目录中,一切正常。但是,如果原始文件与程序不在同一目录中,则 2.0 exe 在原始文件的文件夹中创建新文件。这会导致程序崩溃,因为它希望新文件与 2.0 exe 位于同一目录中。值得注意的是,这只发生在运行 .Net 2.0 和 4.0 的 XP 中。在我运行 .Net 4.5 的主要 Windows 7 机器上,不会发生此问题。

这是我调用 2.0 exe 的代码:

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 exe 然后在与原始文件相同的文件夹中查找新文件(即第 3 步失败)。同样,这只发生在运行 .Net 4.0 和 2.0 的 XP 机器上。

4

0 回答 0