NAnt exec не работает с перенаправлением стандартного ввода? - PullRequest
1 голос
/ 13 июля 2009

Я пытаюсь использовать jsmin с nant - и он просто использует stdin и stdout для ввода и вывода. Задача nant 'exec' позволяет вам перенаправить вывод в файл, но не получить ввод из файла.

Я пытался использовать 'командную строку', используя '>' и '<' для управления вводом и выводом, но nant просто исчезает и не возвращается: (</p>

Я не могу поверить, что никто не пытался сделать это раньше. Пожалуйста помоги! :)

Ответы [ 3 ]

2 голосов
/ 14 июля 2009

С http://www.mail-archive.com/nant-developers@lists.sourceforge.net/msg04575.html. Вы должны быть в состоянии сделать что-то похожее на:

        <exec program="cmd.exe" workingdir=".">
                <arg value="/c cacls" />
                <arg value="${mdb.file}" />
                <arg value="/E" />
                <arg value="/G testpc\aspnet:F" />
                <arg value="&lt; y.txt" />
        </exec>
0 голосов
/ 14 октября 2012

Операторы перенаправления и конвейера являются функцией оболочки, C и C # поддерживают перенаправление другими средствами (дескрипторы файлов). Где-то я читал, что, поскольку класс C # Process не поддерживает перенаправление ввода, nant обеспечивает только перенаправление вывода для <exec>.

Для перенаправления ввода команд мы можем прибегнуть к оболочке:

A) Вызвать cmd.exe с помощью /c, как показано в приведенном выше примере с acloutier. Будьте осторожны с пробелами! На самом деле пример терпит неудачу из-за пробела между < и y.txt, удалите его, чтобы пример работал. Вы также можете преобразовать атрибут value в атрибут line, но тогда вам нужно быть осторожным с цитированием.

B) Поскольку я не мог заставить работать каналы с использованием подхода exec-cmd, вместо этого я генерирую пакетный файл на лету, используя <echo>:

<echo file="${WD}/login.bat">"${P4}" diff -sd | "${P4}" -x- sync -f using</echo>        
<exec program="login.bat" basedir="${WD}" workingdir="${P4.WorkspaceRoot}" />
0 голосов
/ 13 июля 2009

Я считаю, что NAnt поддерживает ввод из файла. Поскольку файл сборки представляет собой XML, вы должны использовать кодировку xml «<». </p>

<exec program="somefile.exe" workingdir=".">
  <arg value="&lt; input.txt" />
</exec>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...