다음을 통해 공유


Target 요소(MSBuild)

순차적으로 실행할 MSBuild의 작업 집합이 들어 있습니다.

<Target Name="Target Name"
        DependsOnTargets="DependentTarget"
        Inputs="Inputs"
        Outputs="Outputs"
        Returns="Returns"
        KeepDuplicateOutputs="true/false"
        BeforeTargets="Targets"
        AfterTargets="Targets"
        Condition="'String A' == 'String B'">
    <Task>... </Task>
    <OnError... />
</Target>

특성 및 요소

다음 단원에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.

특성

특성

설명

Name

필수 특성입니다.

대상의 이름입니다.

DependsOnTargets

선택적 특성입니다.

이 대상을 실행하거나 최상위 종속성 분석을 수행하기 전에 실행해야 할 대상입니다. 대상이 여러 개인 경우 세미콜론으로 구분할 수 있습니다.

Returns

선택적 특성입니다.

이 대상을 호출하는 작업(예: MSBuild 작업)에 사용할 수 있게 될 항목의 집합입니다. 대상이 여러 개인 경우 세미콜론으로 구분할 수 있습니다.

Inputs

선택적 특성입니다.

이 대상에 대한 항목 입력입니다. 이 특성에 포함된 항목은 최상위 종속성 분석을 위한 입력으로 사용됩니다.

Outputs

선택적 특성입니다.

이 대상의 예상 출력입니다. 출력 항목을 생성하기 위해 입력 항목에 변환을 적용할 수 있습니다. 변환에 대한 자세한 내용은 MSBuild 변환을 참조하십시오.

BeforeTargets

선택적 특성입니다.

세미콜론으로 구분된 대상 이름의 목록입니다. 이 대상 이름이 지정되어 있으면 이 대상을 지정된 대상(하나 이상)보다 먼저 실행해야 함을 나타냅니다. 그러면 프로젝트를 만든 이가 대상을 직접 수정하지 않고도 대상의 기존 집합을 확장할 수 있습니다.

AfterTargets

선택적 특성입니다.

대상 이름을 세미콜론으로 구분한 목록입니다. 이 대상 이름이 지정되어 있으면 이 대상을 지정된 대상(하나 이상) 이후에 실행해야 함을 나타냅니다. 그러면 프로젝트를 만든 이가 대상을 직접 수정하지 않고도 대상의 기존 집합을 확장할 수 있습니다.

KeepDuplicateOutputs

선택적 부울 특성입니다.

true인 경우 출력에 있는 같은 항목에 대한 여러 참조가 기록됩니다. 기본적으로 이 특성은 false입니다.

Condition

선택적 특성입니다.

확인할 조건입니다. 조건이 false로 확인되면 DependsOnTargets 특성에 설정된 대상이나 대상의 본문이 작업에서 실행되지 않습니다. 조건에 대한 자세한 내용은 MSBuild 조건을 참조하십시오.

자식 요소

요소

설명

Task

MSBuild 작업의 인스턴스를 만들고 실행합니다. 대상에 작업이 0개 이상 있을 수 있습니다.

OnError

실패한 작업에 대해 ContinueOnError 특성이 false인 경우 하나 이상의 대상이 실행되도록 합니다. 대상에 OnError 요소가 0개 이상 있을 수 있습니다. OnError 요소가 있는 경우 이 요소는 Target 요소의 마지막 요소여야 합니다.

부모 요소

요소

설명

프로젝트

MSBuild 프로젝트 파일의 필수 루트 요소입니다.

설명

실행할 첫 번째 대상은 런타임에 지정됩니다. 대상은 다른 대상에 종속될 수 있습니다. 예를 들어, 배포 대상은 컴파일 대상에 종속될 수 있습니다. MSBuild 엔진에서는 DependsOnTargets 특성에 나타나는 순서에 따라 왼쪽에서 오른쪽으로 종속 항목을 실행합니다. 자세한 내용은 MSBuild 대상을 참조하십시오.

여러 대상이 종속되어 있더라도 한 대상은 빌드 과정에서 한 번만 실행할 수 있습니다.

Condition 특성이 false로 확인되어 대상이 생략되더라도, 나중에 빌드에서 이 대상이 호출되었을 때 Condition 특성이 true로 확인되면 대상이 실행될 수 있습니다.

MSBuild 4 이전에는 TargetOutputs 특성에 지정된 모든 항목을 반환했습니다. 그러려면 나중에 빌드의 작업이 이러한 항목을 요청하는 경우에 대비하여 MSBuild에서 이러한 항목을 기록해야 합니다. 호출자에게 필요한 출력을 어느 대상이 갖고 있는지 나타낼 수 있는 방법이 없으므로 MSBuild는 모든 Outputs의 모든 항목을 호출된 모든 Target에 누적합니다. 이는 출력 항목이 많은 빌드에 배율 문제를 일으킵니다.

사용자가 프로젝트에서 임의의 TargetReturns를 지정하면 Returns 특성이 있는 Target만 해당 항목을 기록합니다.

TargetOutputs 속성과 Returns 속성 둘 다를 포함할 수 있습니다. 대상이 최신인지 확인하기 위해 OutputsInputs와 함께 사용됩니다. Returns(있는 경우)가 Outputs의 값을 재정의하여 어느 항목이 호출자에게 반환되었는지를 확인합니다. Returns가 없으면 위에 설명된 경우를 제외하고 호출자가 Outputs를 사용할 수 있게 됩니다.

MSBuild 4 이전에는 Target이 같은 항목에 대한 복수 참조를 Outputs에 포함할 때마다 해당 중복 항목이 기록되었습니다. 출력 수가 많고 프로젝트 간 종속성이 많은 매우 큰 빌드에서는 중복 항목이 소용이 없으므로 많은 양의 메모리가 낭비될 수 있습니다. KeepDuplicateOutputs 특성이 true로 설정된 경우는 이러한 중복이 저장되지 않습니다.

예제

다음 코드 예제에서는 Csc 작업을 실행하는 Target 요소를 보여 줍니다.

<Target Name="Compile" DependsOnTargets="Resources" Returns="$(TargetPath)">
    <Csc Sources="@(CSFile)"
          TargetType="library"
          Resources="@(CompiledResources)"
          EmitDebugInformation="$(includeDebugInformation)"
          References="@(Reference)"
          DebugType="$(debuggingType)" >
        <Output TaskParameter="OutputAssembly"
                  ItemName="FinalAssemblyName" />
    </Csc>
</Target>

참고 항목

개념

MSBuild 대상

MSBuild 프로젝트 파일 스키마 참조