我是编程和C#的新手,我正在尝试编写一个程序,用于检测来自我的战场2服务器的错误或服务器崩溃,然后关闭服务器(如果服务器尚未关闭)并启动它我已经跑到了一个小小的凹凸处。当我尝试再次启动战场2时,我从bf2收到此错误:
调试断言失败了!版本1.0.2446.12生成日期:
模块:Python
文件: C:\骰子\项目\ BF2Branches \ BF2Demo \代码\ BF2 \游戏\ Python的\ PythonHost.Cpp
行:243文字:无法导入bf2模块:
当前的容易:
错误中的路径不存在。
我已经研究了几种不同的启动应用程序的方法,但它们都有相同的结果。这是我迄今为止尝试的一对夫妇:
Process proc = new Process();
proc.StartInfo.FileName = @"txtServerPath.Text";
proc.Start();
和
Process.Start(txtServerPath.Text);
当我手动启动bf2服务器时,它启动正常。那么我做错了什么?
如果重要的话,我的程序将从Windows Server 2003和Windows 7运行。
答案 0 :(得分:0)
调试断言失败了!版本1.0.2446.12构建日期:模块:Python文件: C:\骰子\项目\ BF2Branches \ BF2Demo \代码\ BF2 \游戏\ Python的\ PythonHost.Cpp 行:243
文字:无法导入bf2模块:
当前的容易:
错误中的路径不存在,因为它是编写PythonHost.cpp的机器上的路径。 'Debug assertion'意味着代码的开发人员在cpp文件中的指定行号处进行条件检查,以检查某个条件以确保“一切正常”。但显然不是。虽然BF2安装了调试版本,但这似乎很奇怪。
无论如何,你的进程确实启动但是错误了。问题是,当你从C#中启动进程时,似乎无法找到名为'bf2'的python模块。
首先验证{BF2安装文件夹} \ python \ bf2 \ __init__.py是否存在。
为了更深入地了解可能发生这种情况的原因,请尝试像这样启动BF2(假设您的C#应用程序是控制台应用程序):
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());
这应该在控制台上打印一些日志,我怀疑这些日志可以推断出来。
顺便说一句,你可以发布剩余的错误信息(即'当前的信息:'行之后)