C# 启动使用python的可执行文件
我是编程和C#的新手,我试图编写一个程序,检测我的战地2服务器的错误或服务器崩溃,然后它将关闭服务器(如果服务器尚未关闭)并重新启动,但我遇到了一个小问题。当我再次尝试启动战地2备份时,我从bf2收到此错误: 调试断言失败!版本1.0.2446.12构建日期:C# 启动使用python的可执行文件,c#,.net,windows-7,windows-server-2003,process.start,C#,.net,Windows 7,Windows Server 2003,Process.start,我是编程和C#的新手,我试图编写一个程序,检测我的战地2服务器的错误或服务器崩溃,然后它将关闭服务器(如果服务器尚未关闭)并重新启动,但我遇到了一个小问题。当我再次尝试启动战地2备份时,我从bf2收到此错误: 调试断言失败!版本1.0.2446.12构建日期: 模块:Python 文件: c:\dice\Projects\BF2Branches\BF2Demo\Code\BF2\Game\Python\PythonHost.Cpp 电话:243 文本:无法导入bf2模块: 当前确认: 错误中的路
模块:Python
文件: c:\dice\Projects\BF2Branches\BF2Demo\Code\BF2\Game\Python\PythonHost.Cpp
电话:243 文本:无法导入bf2模块: 当前确认: 错误中的路径不存在 我研究了几种不同的启动应用程序的方法,但它们都有相同的结果。到目前为止,我已经尝试了以下几点:
Process proc = new Process();
proc.StartInfo.FileName = @"txtServerPath.Text";
proc.Start();
及
当我手动启动bf2服务器时,它可以正常启动。那么我做错了什么如果有必要,我的程序将同时从WindowsServer2003和Windows7运行 调试断言失败!版本1.0.2446.12构建日期:模块:Python文件: c:\dice\Projects\BF2Branches\BF2Demo\Code\BF2\Game\Python\PythonHost.Cpp 电话:243 文本:无法导入bf2模块: 当前确认: 错误中的路径不存在,因为它是写入PythonHost.cpp的计算机上的路径。”“调试断言”意味着代码开发人员在cpp文件中的指定行号处进行条件检查,以检查特定条件,确保“一切正常”。但显然不是这样。虽然BF2安装了调试版本,但这似乎很奇怪 无论如何,您的过程确实开始了,但它出错了。问题是,当您从C#中启动进程时,似乎找不到名为“bf2”的python模块 因此,首先要验证{BF2 Install folder}\python\BF2\\ uuuuu init\ uuuuuuuuu.py是否存在 为了更深入地了解为什么会发生这种情况,请尝试这样启动BF2(假设您的C#应用程序是一个控制台应用程序): 这应该会在控制台上打印一些日志,通过这些日志可以推断出一些有用的东西
顺便问一下,您能否发布剩余的错误消息(即在“Current confile:”行之后)进程启动路径可能不正确。它启动bf2,但bf2随后返回该错误,因此据我所知,路径必须正确。这是bf2给出的完整错误。我使用的是windows窗体,所以我对它做了一些修改。Bf2现在给了我一个不同的错误,但是没有任何内容被打印到日志中。调试断言失败!版本1.0.2446.12构建日期:模块:主文件:c:\dice\Projects\BF2Branches\BF2Demo\Code\BF2\Game\Main\StatusMonitorImpl\u win32.cpp行:107 Text:无法设置控制台窗口大小当前confile:init.py确实存在。对于上述注释的格式,我深表歉意。这个网站上的评论似乎有点奇怪,它不允许我编辑它。
Process.Start(txtServerPath.Text);
Process bf2 = new Process();
bf2.StartInfo.FileName = @"C:\Program Files\EA Games\Battlefield 2\BF2.exe";
bf2.StartInfo.Arguments = "+debugOutput 1";
bf2.StartInfo.UseShellExecute = false;
bf2.StartInfo.RedirectStandardOutput = true;
bf2.StartInfo.RedirectStandardError = true;
bf2.Start();
Console.WriteLine(bf2.StandardOutput.ReadToEnd());
Console.WriteLine(bf2.StandardError.ReadToEnd());