NANT Ошибка сборки: Cmd - PullRequest
       16

NANT Ошибка сборки: Cmd

1 голос
/ 24 августа 2011

Я пытаюсь выполнить скрипт сборки NAnt, который отлично работает в одной среде, но недавно я перенес свои файлы сборки на новый компьютер, где я столкнулся с проблемой ниже.

Используемый код NAnt: exec program = "cmd" commandline = "/ c $ {build.dir} \ XXX.vbs $ {build.version}" failonerror = "false"

Нет Ошибка получена Ошибка внешней программы: cmd (код возврата был 1)

Мое возможное пытается преодолеть это Я проверил переменные окружения и обнаружил, что все в порядке, а также сопоставлены со старой машиной, чтобы они совпадали.

Любые решения / комментарии ??

1 Ответ

1 голос
/ 29 сентября 2011

Кажется, "cmd" запущен, и вам не нужно указывать полный путь.Ошибка «Ошибка внешней программы: cmd (код возврата был 1)» означает, что команда cmd была запущена, но вызвала ошибку.Другими словами, ваш VB-скрипт (то есть «XXX.vbs») не работает.Попробуйте следующее, чтобы найти фактическую ошибку:

  1. Проверьте, что расширенное значение "$ {build.dir} \ XXX.vbs" является допустимым файлом / местоположением.Дважды проверьте ваш рабочий каталог, если вы работаете с относительными путями.

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

    или

    <echo message="${file::exists(build.dir + '\XXX.vbs')}" />
    
  2. Запустите скрипт NAnt из командной строки.Это даст вам лучшее сообщение об ошибке, например, всплывающее сообщение об ошибке с Windows Script Host.

    C:\YourTools\NAnt.exe -buildfile:MyBuildScript.build
    

    Избегайте окна команд, перенаправьте вывод программы.Добавьте «>> exec.log» к строке командной строки в задаче «exec», затем проверьте содержимое файла вывода / журнала (то есть «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
    

Надеюсь, это поможет.

...