启动使用python的可执行文件

时间:2012-07-09 07:59:12

标签: c# .net windows-7 windows-server-2003 process.start

我是编程和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运行。

1 个答案:

答案 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());

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

顺便说一句,你可以发布剩余的错误信息(即'当前的信息:'行之后)