Поделиться через


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>

См. также