【问题标题】:Start Nant from code从代码启动 Nant
【发布时间】:2011-04-24 22:16:25
【问题描述】:

我正在尝试使用 C# 代码启动 Nant。在命令行中输入的相同字符串可以正常工作,但不能在代码中工作。这是我正在使用的代码

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

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

我正在使用 nant.core 从外部构建文件,但它不起作用...如果我在 cmd 中使用相同的命令一切顺利...从代码开始我收到以下消息

{NAnt 0.91(内部版本 0.91.3881.0;alpha2; 17.08.2010.)\r\n版权所有 (C) 2001-2010 格里 肖\r\nhttp://nant.sourceforge.net\r\n\r\n\r\n对于 有关原因的更多信息 构建失败,运行构建 再次进入调试模式。\r\n\r\n尝试 'nant -help' 了解更多信息\r\n}

也在看-help,但没有发现任何有用的东西:(

【问题讨论】:

    标签: c# build nant


    【解决方案1】:

    您可以使用通常从命令行调用的可执行文件:

                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;
                    }
                }
    

    【讨论】:

    • 看起来不错......在我给你复选标记之前我会做一些测试:) 再问一个问题......也许有点傻......但这也可以在一个上使用 asp.net mvc网络服务器? :)
    • 刚刚发现有一个问题......如果路径有空格,如“Documents\Visual Studio 2010”,那么它不会工作......如果路径没有空格,那么它工作正常。 ..这个问题也存在于cmd中...有什么建议吗?
    • 假设 Asp.net Web 服务器在具有足够权限的用户的上下文中运行您的可执行文件,是的。
    • 我没想到这很重要,但是您可以尝试用转义引号将可执行字符串括起来?例如executable = "\"" + executable + "\"" ?我假设您指的是可执行文件的路径?
    • 看起来它现在可以正常工作,无需对路径进行任何更改...我不知道如何,但它正在工作:) 非常感谢:)
    猜你喜欢
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多