CallTarget task

Invokes the specified targets within the project file.

Task parameters

The following table describes the parameters of the CallTarget task.

Parameter Description
RunEachTargetSeparately Optional Boolean input parameter.

If true, the MSBuild engine is called once per target. If false, the MSBuild engine is called once to build all targets. The default value is false.
TargetOutputs Optional ITaskItem[] output parameter.

Contains the outputs of all built targets.
Targets Optional String[] parameter.

Specifies the target or targets to build.
UseResultsCache Optional Boolean parameter.

If true, the cached result is returned if present.

Note When an MSBuild task is run, its output is cached in a scope (ProjectFileName, GlobalProperties)[TargetNames] as a list of build items.


If a target specified in Targets fails and RunEachTargetSeparately is true, the task continues to build the remaining targets.

If you want to build the default targets, use the MSBuild task and set the Projects parameter equal to $(MSBuildProjectFile).

When using CallTarget, MSBuild evaluates the called target in a new scope, as opposed to the same scope it's called from. This means that any item and property changes in the called target are not visible to the calling target. To pass information to the calling target, use the TargetOutputs output parameter.

In addition to the parameters listed above, this task inherits parameters from the TaskExtension class, which itself inherits from the Task class. For a list of these additional parameters and their descriptions, see TaskExtension base class.


The following example calls TargetA from inside CallOtherTargets.

<Project DefaultTargets="CallOtherTargets"

    <Target Name="CallOtherTargets">
        <CallTarget Targets="TargetA"/>

    <Target Name="TargetA">
        <Message Text="Building TargetA..." />


See also