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 省略可能な Boolean 属性です。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. 1 つのターゲットに 0 個以上のタスクを指定できます。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) の場合、1 つ以上のターゲットが実行されます。Causes one or more targets to execute if the ContinueOnError attribute is ErrorAndStop (or false) for a failed task. 1 つのターゲットに 0 個以上の 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 Element (MSBuild) (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.

あるターゲットに複数のターゲットが依存関係を持つ場合でも、ターゲットは 1 回のビルド中に 1 回だけ実行されます。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 より前のバージョンでは、Target によって Outputs 属性で指定されていたすべての項目を返していました。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.

Target には Outputs 属性と 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