0

我是编程和 C# 的新手,我正在尝试编写一个程序来检测来自我的战场 2 服务器的错误或服务器崩溃,然后它将关闭服务器(如果服务器尚未关闭)并重新启动它但是我遇到了一个小颠簸。当我尝试再次启动战场 2 备份时,我从 bf2 收到此错误:

调试断言失败!版本 1.0.2446.12 构建日期:
模块: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();

Process.Start(txtServerPath.Text);

当我手动启动 bf2 服务器时,它启动正常。那么我做错了什么?
如果这很重要,我的程序将从 Windows Server 2003 和 Windows 7 运行。

4

1 回答 1

0

调试断言失败!版本 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 安装文件夹}\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());

这应该在控制台上打印一些日志,我怀疑可以推断出一些有用的日志。

顺便说一句,您可以发布剩余的错误消息(即在“当前配置:”行之后)

于 2012-07-09T11:40:26.913 回答