NANT构建错误:Cmd



我正在尝试执行一个NAnt构建脚本,它在一个环境中完美地工作,但最近我已将构建文件迁移到新机器,在那里我面临以下问题。

使用代码:exec program="cmd" commandline="/c ${build.dir}XXX. exe "根据${构建。版本}"failonerror = " false "

name Error received外部程序失败:cmd(返回代码为1)

My Possible尝试克服这个我检查了环境变量,发现所有的都很好,并且还与旧机器进行了比较,以匹配相同。

有什么解决方案/意见吗??

似乎"cmd"正在运行,您不需要提供完整的路径。错误"外部程序失败:cmd(返回代码为1)"意味着'cmd'运行了,但它产生了一个错误。换句话说,你的VB脚本(即。"XXX.vbs")失败。尝试以下命令查找实际错误:

  1. 验证"${build.dir}XXX. exe"的扩展值。Vbs"是有效的文件/位置。如果你使用的是相对路径,请仔细检查你的工作目录

    <echo message="${build.dir}XXX.vbs" />
    

    <echo message="${file::exists(build.dir + 'XXX.vbs')}" />
    
  2. 从命令行运行NAnt脚本。这将给你一个更好的错误信息,像一个弹出错误从Windows脚本主机。

    C:YourToolsNAnt.exe -buildfile:MyBuildScript.build
    

    避免命令窗口,重定向程序的输出。在'exec'任务的命令行字符串后面附加">> exec.log",然后检查输出/日志文件的内容(即:"exec.log")。

    <exec program="cmd" commandline="/c ${build.dir}XXX.vbs ${build.version} >> xxx_exec.log" failonerror="false" />
    
  3. 或者,使用'exec'任务的更好方法是使用嵌套的'arg'元素。这在你的论点中有空格的情况下会有帮助;你的脚本会读得更清楚:

    <exec program="cmd" failonerror="false">
        <arg value="/c" />
        <arg value="${build.dir}XXX.vbs" />
        <arg value="${build.version}" />
    </exec>
    
  4. 最后,如果您的VB脚本由于无效参数而失败(可能是因为'${build.version}'中的空格),请使用以下内容来调试VB脚本:

    WScript.echo "Argument count", wscript.arguments.count
    For i = 0 to wscript.arguments.count - 1
        Wscript.Echo wscript.arguments.item(i)
    Next
    

最新更新