Target 요소(MSBuild)Target Element (MSBuild)

순차적으로 실행할 MSBuildMSBuild의 작업 집합을 포함합니다.Contains a set of tasks for MSBuildMSBuild to execute sequentially.

<Project><Project>
<Target><Target>

구문Syntax

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

특성 및 요소Attributes and Elements

다음 단원에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.The following sections describe attributes, child elements, and parent elements.

특성Attributes

특성Attribute 설명Description
Name 필수 특성입니다.Required attribute.

대상의 이름입니다.The name of the target.
Condition 선택적 특성입니다.Optional attribute.

평가할 조건입니다.The condition to be evaluated. 조건이 false로 평가되면 해당 대상 또는 DependsOnTargets 특성에 설정되어 있는 대상의 본문이 실행되지 않습니다.If the condition evaluates to false, the target will not execute the body of the target or any targets that are set in the DependsOnTargets attribute. 조건에 대한 자세한 내용은 조건을 참조하세요.For more information about conditions, see Conditions.
Inputs 선택적 특성입니다.Optional attribute.

이 대상에 대한 입력을 구성하는 파일입니다.The files that form inputs into this target. 파일이 여러 개인 경우 세미콜론으로 구분합니다.Multiple files are separated by semicolons. 파일의 타임스탬프를 Outputs에 있는 파일의 타임스탬프와 비교하여 Target이 최신 상태인지를 확인합니다.The timestamps of the files will be compared with the timestamps of files in Outputs to determine whether the Target is up to date. 자세한 내용은 증분 빌드, 방법: 증분 빌드변환을 참조하세요.For more information, see Incremental Builds, How to: Build Incrementally, and Transforms.
Outputs 선택적 특성입니다.Optional attribute.

이 대상에 대한 출력을 구성하는 파일입니다.The files that form outputs into this target. 파일이 여러 개인 경우 세미콜론으로 구분합니다.Multiple files are separated by semicolons. 파일의 타임스탬프를 Inputs에 있는 파일의 타임스탬프와 비교하여 Target이 최신 상태인지를 확인합니다.The timestamps of the files will be compared with the timestamps of files in Inputs to determine whether the Target is up to date. 자세한 내용은 증분 빌드, 방법: 증분 빌드변환을 참조하세요.For more information, see Incremental Builds, How to: Build Incrementally, and Transforms.
Returns 선택적 특성입니다.Optional attribute.

이 대상을 호출하는 작업(예: MSBuild 작업)에 대해 제공할 항목 집합입니다.The set of items that will be made available to tasks that invoke this target, for example, MSBuild tasks. 대상이 여러 개인 경우 세미콜론으로 구분합니다.Multiple targets are separated by semicolons. 파일의 대상에 Returns 특성이 없으면 Outputs 특성이 이 용도로 대신 사용됩니다.If the targets in the file have no Returns attributes, the Outputs attributes are used instead for this purpose.
KeepDuplicateOutputs 선택적 부울 특성입니다.Optional Boolean attribute.

true인 경우 대상의 Returns에서 같은 항목에 대한 여러 참조가 기록됩니다.If true, multiple references to the same item in the target's Returns are recorded. 기본적으로 이 특성은 false입니다.By default, this attribute is false.
BeforeTargets 선택적 특성입니다.Optional attribute.

대상 이름의 세미콜론으로 구분된 목록입니다.A semicolon-separated list of target names. 지정하는 경우 하나 이상의 지정된 대상을 실행하기 전에 이 대상을 실행해야 함을 나타납니다.When specified, indicates that this target should run before the specified target or targets. 이렇게 하면 프로젝트 작성자가 기존 대상 집합을 직접 수정하지 않고 확장할 수 있습니다.This lets the project author extend an existing set of targets without modifying them directly. 자세한 내용은 대상 빌드 순서를 참조하세요.For more information, see Target Build Order.
AfterTargets 선택적 특성입니다.Optional attribute.

대상 이름의 세미콜론으로 구분된 목록입니다.A semicolon-separated list of target names. 지정하는 경우 하나 이상의 지정된 대상을 실행한 후에 이 대상을 실행해야 함을 나타납니다.When specified, indicates that this target should run after the specified target or targets. 이렇게 하면 프로젝트 작성자가 기존 대상 집합을 직접 수정하지 않고 확장할 수 있습니다.This lets the project author extend an existing set of targets without modifying them directly. 자세한 내용은 대상 빌드 순서를 참조하세요.For more information, see Target Build Order.
DependsOnTargets 선택적 특성입니다.Optional attribute.

이 대상을 실행하거나 최상위 종속성 분석을 수행하려면 실행해야 하는 대상입니다.The targets that must be executed before this target can be executed or top-level dependency analysis can occur. 대상이 여러 개인 경우 세미콜론으로 구분합니다.Multiple targets are separated by semicolons.
Label 선택적 특성입니다.Optional attribute.

시스템 및 사용자 요소를 식별하거나 정렬할 수 있는 식별자입니다.An identifier that can identify or order system and user elements.

자식 요소Child Elements

요소Element 설명Description
TaskTask MSBuildMSBuild 작업의 인스턴스를 만들고 실행합니다.Creates and executes an instance of an MSBuildMSBuild task. 대상에는 작업이 없을 수도 있고 하나 이상 있을 수도 있습니다.There may be zero or more tasks in a target.
PropertyGroupPropertyGroup 사용자 정의 Property 요소 집합을 포함합니다.Contains a set of user-defined Property elements. .NET Framework 3.5부터는 Target 요소가 PropertyGroup 요소를 포함할 수 있습니다.Starting in the .NET Framework 3.5, a Target element may contain PropertyGroup elements.
ItemGroupItemGroup 사용자 정의 Item 요소 집합을 포함합니다.Contains a set of user-defined Item elements. .NET Framework 3.5부터는 Target 요소가 ItemGroup 요소를 포함할 수 있습니다.Starting in the .NET Framework 3.5, a Target element may contain ItemGroup elements. 자세한 내용은 항목을 참조하세요.For more information, see Items.
OnErrorOnError 실패한 작업의 ContinueOnError 특성이 ErrorAndStop 또는 false인 경우 하나 이상의 대상이 실행되도록 합니다.Causes one or more targets to execute if the ContinueOnError attribute is ErrorAndStop (or false) for a failed task. 대상에는 OnError 요소가 없을 수도 있고 하나 이상 있을 수도 있습니다.There may be zero or more OnError elements in a target. OnError 요소는 있는 경우 Target 요소의 마지막 요소여야 합니다.If OnError elements are present, they must be the last elements in the Target element.

ContinueOnError 특성에 대한 자세한 내용은 Task 요소(MSBuild)를 참조하세요.For information about the ContinueOnError attribute, see Task Element (MSBuild).

부모 요소Parent Elements

요소Element 설명Description
프로젝트Project MSBuildMSBuild 프로젝트 파일의 필수 루트 요소입니다.Required root element of an MSBuildMSBuild project file.

설명Remarks

실행할 첫 번째 대상은 런타임에 지정됩니다.The first target to execute is specified at run time. 대상은 다른 대상에 대한 종속성을 포함할 수 있습니다.Targets can have dependencies on other targets. 예를 들어 배포용 대상은 컴파일용 대상에 종속됩니다.For example, a target for deployment depends on a target for compilation. MSBuildMSBuild 엔진은 종속성을 DependsOnTargets 특성에 나타나는 순서대로 왼쪽에서 오른쪽으로 실행합니다.The MSBuildMSBuild engine executes dependencies in the order in which they appear in the DependsOnTargets attribute, from left to right. 자세한 내용은 대상을 참조하세요.For more information, see Targets.

둘 이상의 대상이 종속성을 포함하고 있더라도 대상은 빌드 중에 한 번만 실행됩니다.A target is only executed once during a build, even if more than one target has a dependency on it.

Condition 특성이 false로 평가되어 대상을 건너뛰더라도 빌드의 뒷부분에서 해당 대상을 호출하는 시점에 Condition 특성이 true로 평가되면 대상을 실행할 수 있습니다.If a target is skipped because its Condition attribute evaluates to false, it can still be executed if it is invoked later in the build and its Condition attribute evaluates to true at that time.

MSBuild 4 이전 버전에서 TargetOutputs 특성에 지정된 모든 항목을 반환했습니다.Before MSBuild 4, Target returned any items that were specified in the Outputs attribute. 이를 위해 MSBuild는 빌드 뒷부분의 작업이 요청할 때를 대비하여 이러한 항목을 기록해야 했습니다.To do this, MSBuild had to record these items in case tasks later in the build requested them. 호출자에게 필요한 출력을 포함하는 대상을 나타낼 방법이 없었으므로 MSBuild는 호출된 모든 Target에서 모든 Outputs의 항목을 모두 누적 기록했습니다.Because there was no way to indicate which targets had outputs that callers would require, MSBuild accumulated all items from all Outputs on all invoked Targets. 이로 인해 출력 항목 수가 많은 빌드의 경우 확장 문제가 발생했습니다.This lead to scaling problems for builds that had a large number of output items.

사용자가 프로젝트의 Target 요소에 대해 Returns를 지정하는 경우 Returns 특성이 포함된 Target만 해당 항목을 기록합니다.If the user specifies a Returns on any Target element in a project, then only those Targets that have a Returns attribute record those items.

TargetOutputs 특성 및 Returns 특성을 모두 포함할 수 있습니다.A Target may contain both an Outputs attribute and a Returns attribute. OutputsInputs과 함께 사용되어 대상이 최신 상태인지를 확인합니다.Outputs is used with Inputs to determine whether the target is up-to-date. Returns(있는 경우)는 Outputs의 값을 재정의하여 호출자에게 반환되는 항목을 결정합니다.Returns, if present, overrides the value of Outputs to determine which items are returned to callers. Returns가 없으면 앞에서 설명하는 경우를 제외하고 Outputs가 호출자에게 제공됩니다.If Returns is not present, then Outputs will be made available to callers except in the case described earlier.

MSBuild 4 이전 버전에서는 TargetOutputs의 같은 항목에 대한 여러 참조가 포함되어 있는 경우 항상 중복 항목이 기록되었습니다.Before MSBuild 4, any time that a Target included multiple references to the same item in its Outputs, those duplicate items would be recorded. 중복 항목은 전혀 사용되지 않으므로 출력 수와 프로젝트 상호 종속성이 많은 대형 빌드에서는 이러한 방식으로 인해 많은 양의 메모리가 낭비됩니다.In very large builds that had a large number of outputs and many project interdependencies, this would cause a large amount of memory to be wasted because the duplicate items were not of any use. KeepDuplicateOutputs 특성을 true로 설정하면 이러한 중복 항목이 기록됩니다.When the KeepDuplicateOutputs attribute is set to true, these duplicates are recorded.

예제Example

다음 코드 예제는 Csc 작업을 실행하는 Target 요소를 보여 줍니다.The following code example shows a Target element that executes the Csc task.

<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>  

참고 항목See Also

대상 Targets
프로젝트 파일 스키마 참조Project File Schema Reference