Подавление вывода с помощью задачи Exec в msbuild - PullRequest
3 голосов
/ 07 декабря 2010

Я запускаю команду, используя msbuild «Exec».Однако я не хочу, чтобы вывод stdio, сгенерированный из команды, появлялся в консоли, есть ли способ его подавления?

Может быть, что-то вроде использования задачи Exec для вызова «cmd.exe» с моимКоманда exe является целью, и затем с помощью «>» перенаправляет вывод куда-либо еще.(Однако я не могу заставить это решение работать).

т.е.

<Exec Command="cmd.exe sqlplus.exe  $(someCommandSpecificSettings) &lt; test.txt"/>

Какие-либо предложения, чтобы мой пример работал или альтернативы?

Ответы [ 4 ]

8 голосов
/ 08 декабря 2010

Только для вашей информации:

  • (&gt;) перенаправить вывод в файл, который вы указали после (перезаписать при необходимости)

  • добавить вывод к файлу, который вы указали после (не перезаписать)

  • <перенаправить стандартный ввод к вашей команде (в основном передайте содержимое файла after вашей команде) </li>

С помощью своего кода вы создаете (один раз) и заменяете каждый раз файл test.txt.Вместо использования имени файла вы можете использовать NUL, что означает перенаправление в никуда.Это не создаст файл (который в некоторых случаях может быть огромным):

<Exec Command="cmd.exe /c sqlplus.exe  $(someCommandSpecificSettings) &gt; NUL"/>

Если вы также хотите перенаправить ошибки, используйте 2> например:

<Exec Command="cmd.exe /c sqlplus.exe  $(someCommandSpecificSettings) &gt; NUL 2&gt;errors.txt"/>

Также обратите внимание, что вы можете перенаправить stderr в stdout, используя 2> & 1, поэтому

> NUL 2>&1

перенаправит все в никуда.

Надеюсь, это прояснит ваш ум ^^

3 голосов
/ 17 января 2018

Лучший способ подавить стандартный вывод и стандартный вывод ошибок из задач Exec или любой задачи, которая наследуется от ToolTask ​​, состоит в снижении важности вывода.Таким образом, если вы отлаживаете свою сборку, эти выходные данные не будут полностью скрыты, потому что вы перенаправляете их на nul.

<Exec Command="sqlplus.exe" StandardOutputImportance="low" StandardErrorImportance="low"/>
1 голос
/ 07 декабря 2010

Хорошо, разобрался ... cmd.exe требовал аргумент a / c, чтобы работать для того, что я хотел, то есть:

Кроме того, оно должно быть &gt; вместо &lt;

<Exec Command="cmd.exe /c sqlplus.exe  $(someCommandSpecificSettings) &gt; test.txt"/>
0 голосов
/ 07 декабря 2010

Попробуйте это:

<Exec Command="cmd.exe sqlplus.exe  $(someCommandSpecificSettings) &lt; test.txt >nul"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...