从 C# 启动调试模式应用程序
Launching debug mode application from c#
我目前正在开发一个 C++ 项目,我制作了一个 C# wpf 启动器来配合它。
这些都行得通:
- Visual Studio 调试器
- 运行调试文件夹中的 .exe
- 使用窗口的命令行运行调试文件夹中的 .exe
然而,从 C# 代码启动调试文件夹中的 file.exe 会导致 C++ 程序在启动时崩溃。
我什至尝试在 c# 中运行相同的命令行,通过键入它来工作,但它导致崩溃。
将调试器附加到 C++ 进程后,崩溃的原因似乎是缺少资产(一些着色器代码)。然而,assets 文件夹位于调试目录中,正如我所说,程序通过单击它来运行。
我在 C# 中尝试过:
- 在命令行中运行一个命令来简单地启动exe
- 使用
ProcessStartInfo
这可能是什么原因造成的?
如 Vikas 所述,需要设置工作目录,否则 windows 似乎不允许进程访问文件。
这是对我有用的代码:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(this.PathToExeTextBox.Text);
startInfo.FileName = this.PathToExeTextBox.Text;
Process.Start(startInfo);
我目前正在开发一个 C++ 项目,我制作了一个 C# wpf 启动器来配合它。
这些都行得通:
- Visual Studio 调试器
- 运行调试文件夹中的 .exe
- 使用窗口的命令行运行调试文件夹中的 .exe
然而,从 C# 代码启动调试文件夹中的 file.exe 会导致 C++ 程序在启动时崩溃。 我什至尝试在 c# 中运行相同的命令行,通过键入它来工作,但它导致崩溃。
将调试器附加到 C++ 进程后,崩溃的原因似乎是缺少资产(一些着色器代码)。然而,assets 文件夹位于调试目录中,正如我所说,程序通过单击它来运行。
我在 C# 中尝试过:
- 在命令行中运行一个命令来简单地启动exe
- 使用
ProcessStartInfo
这可能是什么原因造成的?
如 Vikas 所述,需要设置工作目录,否则 windows 似乎不允许进程访问文件。
这是对我有用的代码:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(this.PathToExeTextBox.Text);
startInfo.FileName = this.PathToExeTextBox.Text;
Process.Start(startInfo);