2011-04-24 101 views
2

我想用C#代码启动南特。在命令行中输入的字符串工作正常,但不能从代码中运行。下面是我使用从代码开始南特

StringWriter consoleOut = new StringWriter(); 
Console.SetOut(consoleOut); 

ConsoleDriver.Main(new string[] { "-buildfile:" + filePath }); 

我使用nant.core到externaly建文件,但它不会工作...如果我使用CMD一切相同的命令顺利代码...从代码中启动它我得到以下信息

{恶性0.91(构建0.91.3881.0;α-2; 2010年8月17日。)\ r \ n版权所有(C)2001-2010格里 肖\ r \ nhttp://恶性。 sourceforge.net \ r \ n \ r \ n \ r \ n对于 关于构建失败的原因 的更多信息,请在调试模式下再次运行构建 。\ r \ n \ r \ n试一试NT -help”以获取更多信息\ r \ n}

看-help太多,但没有发现任何有用:(

回答

3

你可以掏出你的可执行文件,你通常会在命令行调用:

  var startInfo = new ProcessStartInfo(executable, parameters) 
      { 
       UseShellExecute = false, 
       RedirectStandardError = false, 
       RedirectStandardOutput = false, 
       CreateNoWindow = true 
      }; 

      using(var process = Process.Start(startInfo)) 
      { 
       if(process != null) 
       { 
        process.WaitForExit(timeoutInMilliSeconds); 
        return process.ExitCode; 
       } 
      } 
+0

看起来不错...生病做一些测试之前,我给你对号:)还有一个问题......也许有点傻..但是这也将使用网络上的asp.net的MVC工作服务器? :) – 2011-04-24 23:05:09

+0

只是发现有一个问题...如果路径有像“Documents \ Visual Studio 2010”的空间,那么它不会工作...如果路径没有空格,那么它工作正常......这个问题是也在CMD目前...任何建议? – 2011-04-24 23:13:10

+0

假设Asp.net Web服务器在具有足够权限运行可执行文件的用户上下文中运行,是的。 – danielpops 2011-04-24 23:13:20