Exec 작업

지정된 인수를 사용하여 지정한 프로그램 또는 명령을 실행합니다.

매개 변수

다음 표에서는 Exec 작업의 매개 변수에 대해 설명합니다.

매개 변수 Description
Command 필수 String 매개 변수입니다.

실행할 명령입니다. Attrib와 같은 시스템 명령이나 program.exe, runprogram.bat 또는 setup.msi와 같은 실행 파일일 수 있습니다.

이 매개 변수는 여러 줄의 명령을 포함할 수 있습니다. 또는 여러 개의 명령을 하나의 배치 파일에 추가하고 이 매개 변수를 사용하여 실행할 수 있습니다.
ConsoleOutput 선택적 ITaskItem[] 출력 매개 변수입니다.

각 항목 출력은 도구에서 생성하는 표준 출력 또는 표준 오류 스트림의 줄입니다. 이는 ConsoleToMsBuildtrue로 설정된 경우에만 캡처됩니다.
ConsoleToMsBuild 선택적 Boolean 매개 변수입니다.

true일 경우 작업이 도구의 표준 오류 및 표준 출력을 캡처하고, ConsoleOutput 출력 매개 변수에서 사용할 수 있게 합니다.

기본값: false.
CustomErrorRegularExpression 선택적 String 매개 변수입니다.

도구 출력에서 오류 줄을 찾는 데 사용되는 정규식을 지정합니다. 예외적으로 형식이 지정된 출력을 생성하는 도구에 유용합니다.

기본값: null(사용자 지정 처리 안 함).
CustomWarningRegularExpression 선택적 String 매개 변수입니다.

도구 출력에서 경고 줄을 찾는 데 사용되는 정규식을 지정합니다. 예외적으로 형식이 지정된 출력을 생성하는 도구에 유용합니다.

기본값: null(사용자 지정 처리 안 함).
EchoOff 선택적 Boolean 매개 변수입니다.

true일 경우 작업이 Command의 확장된 양식을 MSBuild 로그로 내보내지 않습니다.

기본값: false.
ExitCode 선택적 Int32 읽기 전용 출력 매개 변수입니다.

실행된 명령에서 제공하는 종료 코드를 지정합니다. 단, 작업에서는 오류를 기록했지만 프로세스의 종료 코드는 0(성공)인 경우 ExitCode는 -1로 설정됩니다.
IgnoreExitCode 선택적 Boolean 매개 변수입니다.

true이면 이 작업은 실행한 명령에서 제공하는 종료 코드를 무시합니다. 그렇지 않고 실행된 명령이 0이 아닌 종료 코드를 반환하는 경우 이 작업은 false를 반환합니다.

기본값: false.
IgnoreStandardErrorWarningFormat 선택적 Boolean 매개 변수입니다.

false이면 표준 오류/경고 형식과 일치하는 줄을 출력에서 선택하고 오류/경고로 로깅합니다. true이면 이 동작을 사용하지 않도록 설정하세요.

기본값: false.
Outputs 선택적 ITaskItem[] 출력 매개 변수입니다.

작업의 출력 항목을 포함합니다. Exec 작업은 자체적으로 이를 설정하지 않습니다. 대신 마치 설정된 것처럼 사용자가 제공하여 나중에 프로젝트에서 사용되도록 할 수 있습니다.
StdErrEncoding 선택적 String 출력 매개 변수입니다.

캡처된 작업 표준 오류 스트림의 인코딩을 지정합니다. 기본값은 현재 콘솔 출력 인코딩입니다.
StdOutEncoding 선택적 String 출력 매개 변수입니다.

캡처된 작업 표준 출력 스트림의 인코딩을 지정합니다. 기본값은 현재 콘솔 출력 인코딩입니다.
UseUtf8Encoding 선택적 String 매개 변수입니다.

실행된 명령에 대한 명령줄을 처리할 때 UTF8 코드 페이지를 사용할지 여부를 지정합니다. 유효한 값은 Always, Never 또는 Detect입니다. 기본값은 Detect입니다. 즉, 비 ANSI 문자가 있는 경우에만 UTF8 코드 페이지를 사용합니다.
WorkingDirectory 선택적 String 매개 변수입니다.

명령이 실행될 디렉터리를 지정합니다.

기본값: 프로젝트의 현재 작업 디렉터리.

ToolTaskExtension 매개 변수

이 작업은 Task 클래스에서 상속되는 ToolTask 클래스에서 상속되는 ToolTaskExtension 클래스에서 상속됩니다. 이 상속 체인은 매개 변수에서 파생되는 작업에 해당 매개 변수 몇 개를 추가합니다.

다음 표에서는 기본 클래스의 매개 변수에 대해 설명합니다.

매개 변수 Description
EchoOff 선택적 bool 매개 변수입니다.

true로 설정된 경우 이 작업은 명령줄이 stdout으로 복사되지 않도록 /Qcmd.exe 명령줄로 전달합니다.
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 매개 변수입니다.

작업에서 내부 실행 파일을 로드할 위치를 지정합니다. 이 매개 변수를 지정하지 않으면 작업에서는 MSBuild를 실행하고 있는 프레임워크 버전에 해당하는 SDK 설치 경로가 사용됩니다.
UseCommandProcessor 선택적 bool 매개 변수입니다.

true로 설정된 경우 이 작업은 명령줄에 대한 배치 파일을 만들고 명령을 직접 실행하는 대신 명령 처리기를 사용하여 실행합니다.
YieldDuringToolExecution 선택적 bool 매개 변수입니다.

true로 설정된 경우 작업이 실행 중이면 이 작업이 노드를 발생시킵니다.

설명

이 작업은 수행하려는 작업에 대한 특정 MSBuild 작업을 사용할 수 없을 때 유용합니다. 그러나 Exec 작업은 보다 구체적인 작업과 달리 실행하는 도구 또는 명령의 결과에 따라 추가 처리 또는 조건부 작업을 수행할 수 없습니다.

프로세스를 Exec 직접 호출하는 대신 작업은 Windows에서 cmd.exe를 호출하거나 그렇지 않으면 sh를 호출합니다.

IgnoreExitCodeIgnoreStandardErrorWarningFormat 매개 변수는 작업이 오류를 나타내는 false를 반환하는 조건에 영향을 줍니다. 기본 설정(둘 모두에 대해 false)을 사용하면 Exec 작업은 실행 파일에 0이 아닌 종료 코드가 있거나 실행 파일의 표준 오류 스트림에서 진단 메시지가 발견된 경우 실패를 나타냅니다(false 반환). 실행 파일이 0이 아닌 종료 코드를 반환하는 경우에만 Exec이 실패를 나타내도록 하려면 IgnoreStandardErrorWarningFormattrue로 설정합니다.

예시

다음 예제에서는 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>

참고 항목