我的解决方案有3个项目。两个控制台线应用程序和一个XNA游戏项目(以及XNA的内容项目)。当我使用以下代码从另一个代码调用一个控制台应用程序时:
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = @"..\..\..\..\..\ChildProcess\bin\Debug\ChildProcess.exe",
UseShellExecute = false,
CreateNoWindow = false,
RedirectStandardOutput = true,
RedirectStandardInput = true
};
Process process = Process.Start(startInfo);
process.WaitForExit();
我可以在ChildProcess应用程序中设置一个断点并进行调试。但是,如果我将此代码复制到XNA游戏项目(在其Main方法的开头)并将其设置为启动ChildProcess应用程序的起始项目,但ChildProcess应用程序中的断点永远不会被命中。我尝试更改ProcessStartInfo init属性,但它没有帮助。
如何以这种方式调用控制台应用程序?我的XNA游戏以窗口模式运行。
答案 0 :(得分:0)
您可以在挂起状态下启动子进程,并手动附加调试器......
遗憾的是.net似乎无法直接执行此操作...但是您可以使用pinvoke使用CREATE_SUSPENDED标志调用winapi CreateProcess()...
难看,但它应该有用......