Exec - задача
Запускает заданную программу или команду с использованием заданных аргументов.
Параметры
В следующей таблице приводятся параметры для задачи Exec
.
Параметр | Описание |
---|---|
Command |
Обязательный параметр String .Выполняемые команды. Это могут быть системные команды (например, attrib) или исполняемые файлы (например, program.exe, runprogram.bat или setup.msi). Этот параметр может содержать несколько строк с командами. Кроме того, можно поместить несколько команд в пакетный файл и запустить его с помощью этого параметра. |
ConsoleOutput |
Необязательный выходной параметр ITaskItem[] .Выходные данные каждого элемента представляют собой строку из стандартных выходных данных или стандартного потока ошибок, созданного средством. Они захватываются, только если ConsoleToMsBuild задано значение true . |
ConsoleToMsBuild |
Необязательный параметр Boolean .Если он имеет значение true , задача захватит стандартную ошибку и стандартные выходные данные средства и сделает их доступными в выходном параметре ConsoleOutput .По умолчанию: false . |
CustomErrorRegularExpression |
Необязательный параметр String .Указывает регулярное выражение, которое используется для выявления ошибочных строк в выходных данных средства. Это полезно при работе со средствами, которые создают нестандартно отформатированные выходные данные. Если не IgnoreStandardErrorWarningFormat указано, это регулярное выражение в дополнение к стандартным.Значение по умолчанию: null (без настраиваемой обработки). |
CustomWarningRegularExpression |
Необязательный параметр String .Указывает регулярное выражение, которое используется для выявления строк с предупреждениями в выходных данных средства. Это полезно при работе со средствами, которые создают нестандартно отформатированные выходные данные. Если не IgnoreStandardErrorWarningFormat указано, это регулярное выражение в дополнение к стандартным.Значение по умолчанию: null (без настраиваемой обработки). |
EchoOff |
Необязательный параметр Boolean .Если он имеет значение true , задача не будет создавать расширенную форму Command в журнале MSBuild.По умолчанию: false . |
ExitCode |
Необязательный выходной параметр Int32 , доступный только для чтения.Указывает код выхода, предоставленный выполняемой командой, за исключением случаев, когда для задачи регистрируется ошибка, а процесс имеет код выхода 0 (успешно), то ExitCode получает значение -1. |
IgnoreExitCode |
Необязательный параметр Boolean .Если он имеет значение true , то задача игнорирует код выхода, передаваемый выполняемой командой. В противном случае задача возвращает false , если выполняемая команда возвращает отличный от нуля код выхода.По умолчанию: false . |
IgnoreStandardErrorWarningFormat |
Необязательный параметр Boolean .Если false выберите строки в выходных данных, которые соответствуют стандартному формату ошибок и предупреждений, и записывает их в журнал в виде ошибок и предупреждений. Значение true отключает это поведение.По умолчанию: false . |
Outputs |
Необязательный выходной параметр ITaskItem[] .Содержит выходные элементы задачи. Задача Exec не устанавливает их самостоятельно. Вместо этого вы можете предоставить значения, которые будут переданы как выходные данные, чтобы использовать их в последующих элементах проекта. |
StdErrEncoding |
Необязательный выходной параметр String .Указывает кодировку перехватываемого стандартного потока ошибки для задачи. По умолчанию используется текущая кодировка выходной консоли. |
StdOutEncoding |
Необязательный выходной параметр String .Указывает кодировку перехватываемого стандартного потока вывода для задачи. По умолчанию используется текущая кодировка выходной консоли. |
UseUtf8Encoding |
Необязательный параметр String .Указывает, следует ли использовать кодовую страницу UTF8 при обработке командной строки для выполненных команд. Допустимые значения: Always , Never или Detect . Значение по умолчанию — Detect , т. е. кодовая страница UTF8 используется только при наличии символов, отличающихся от ANSI. |
WorkingDirectory |
Необязательный параметр String .Указывает каталог, в котором будет выполняться команда. Значение по умолчанию: текущая рабочая папка проекта. |
Параметры ToolTaskExtension
Эта задача наследуется от класса ToolTaskExtension, который наследуется от класса ToolTask, который, в свою очередь, наследуется от класса Task. Эта цепочка наследования добавляет несколько параметров в задачи, которые от них происходят.
В следующей таблице описываются параметры базовых классов:
Параметр | Описание |
---|---|
EchoOff | Необязательный параметр bool .Если задано значение true , то задача передает /Q в командную строку cmd.exe и командная строка не копируется в stdout. |
EnvironmentVariables | Необязательный параметр массива String .Массив определений переменных среды, разделенных точкой с запятой. Каждое определение должно содержать имя и значение переменной среды, разделенные знаком равенства. Эти переменные частично передаются в порожденный исполняемый файл, дополняя или выборочно переопределяя обычный блок среды. Например, Variable1=Value1;Variable2=Value2 . |
ExitCode | Необязательный выходной параметр Int32 , доступный только для чтения.Задает код выхода, предоставляемый выполняемой командой. Если задача зарегистрировала какие-либо ошибки, но процесс имеет код выхода 0 (успешное завершение), этот параметр имеет значение -1. |
LogStandardErrorAsError | Необязательный параметр bool .Если он имеет значение true , то все сообщения, полученные в стандартном потоке ошибок, регистрируются как ошибки. |
StandardErrorImportance | Необязательный параметр String .степень важности, с которой текст из стандартного потока ошибок следует регистрировать в журнале. |
StandardOutputImportance | Необязательный параметр String .Степень важности, с которой текст из стандартного выходного потока следует регистрировать в журнале. |
Timeout | Необязательный параметр Int32 .Задает промежуток времени в миллисекундах, после которого исполняемый файл задачи прекращается. Значение по умолчанию — Int.MaxValue . Оно указывает, что период ожидания отсутствует. Время ожидания в миллисекундах. |
ToolExe | Необязательный параметр string .Он может реализовываться в проектах для переопределения параметра ToolName. Задачи могут переопределять его для сохранения параметра ToolName. |
ToolPath | Необязательный параметр string .Указывает расположение, откуда задача загружает базовый исполняемый файл. Если этот параметр не задан, задача использует путь установки пакета SDK, соответствующий версии платформы, на которой выполняется MSBuild. |
UseCommandProcessor | Необязательный параметр bool .Если задано значение true , эта задача создает пакетный файл для командной строки и выполняет его с помощью командного процессора вместо непосредственного выполнения команды. |
YieldDuringToolExecution | Необязательный параметр bool .Если задано значение true , эта задача создает узел при выполнении его задачи. |
Замечания
Эта задача полезна, если отсутствует специальная задача MSBuild для задания, которое вы хотите выполнить. Однако задача Exec
, в отличие от более специализированных задач, не может выполнять дополнительную обработку или условные операции на основе результатов, полученных из средства или от команды, для которых она выполняется.
Вместо прямого вызова процесса Exec
задача вызывает cmd.exe в Windows или sh в противном случае.
Параметры IgnoreExitCode
и IgnoreStandardErrorWarningFormat
влияют на условия, при которых задача возвращает значение false
, которое обозначает ошибку. Если используются значения по умолчанию (false
для обоих параметров), то задача Exec
сообщает о сбое (возвращает значение false
), если исполняемый объект возвратил ненулевой код выхода или если в стандартном потоке ошибок исполняемого объекта обнаружено диагностическое сообщение. Если вы хотите, чтобы Exec
сообщала об ошибке только в том случае, если исполняемый объект возвращает ненулевой код выхода, задайте для IgnoreStandardErrorWarningFormat
значение true
.
Пример
В следующем примере задача Exec
выполняет команду.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Binaries Include="*.dll;*.exe"/>
</ItemGroup>
<Target Name="SetACL">
<!-- set security on binaries-->
<Exec Command="echo y| cacls %(Binaries.Identity) /G everyone:R"/>
</Target>
</Project>