Элемент Target (MSBuild)
Содержит набор задач для MSBuild для последовательного выполнения.
<Project><Target>
Синтаксис
<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>
Элементы и атрибуты
В следующих разделах описаны атрибуты, дочерние и родительские элементы.
Атрибуты
Атрибут | Description |
---|---|
Name |
Обязательный атрибут элемента . Имя целевого объекта. Имя целевого объекта может содержать любой символ, кроме $@()%*?. . |
Condition |
Необязательный атрибут элемента . Проверяемое условие. Если условие принимает значение false , целевой объект не будет выполнять тело целевого объекта или любые целевые объекты, заданные в атрибуте DependsOnTargets . Дополнительные сведения об условиях см. в разделе Условия. |
Inputs |
Необязательный атрибут элемента . Файлы, образующие входные данные для этого целевого объекта. При указании нескольких файлов они разделяются точкой с запятой. Отметки времени файлов будут сравниваться с отметками времени файлов в Outputs для определения актуальности Target . Дополнительные сведения см. в статьях Добавочные сборки, Практическое руководство. Инкрементная сборка и Преобразования MSBuild. |
Outputs |
Необязательный атрибут элемента . Файлы, образующие выходные данные для этого целевого объекта. При указании нескольких файлов они разделяются точкой с запятой. Отметки времени файлов будут сравниваться с отметками времени файлов в Inputs для определения актуальности Target . Дополнительные сведения см. в статьях Добавочные сборки, Практическое руководство. Инкрементная сборка и Преобразования MSBuild. |
Returns |
Необязательный атрибут элемента . Набор элементов, которые будут доступны для задач, вызывающих этот целевой объект, например задач MSBuild. Несколько целевых объектов разделяются точкой с запятой. Если целевые объекты в файле не имеют атрибутов Returns , для этой цели используются атрибуты Outputs. |
KeepDuplicateOutputs |
Дополнительный логический атрибут. Если указано значение true , в атрибут Returns целевого объекта записывается несколько ссылок на один и тот же элемент. По умолчанию для атрибута устанавливается значение false . |
BeforeTargets |
Необязательный атрибут элемента . Список имен целевых объектов, разделенных точкой с запятой. Если указан, означает, что этот целевой объект должен выполняться перед указанным целевым объектом или объектами. Это позволяет автору проекта расширять существующий набор целевых объектов, не изменяя их напрямую. Дополнительные сведения см. в разделе Порядок сборки целевых объектов. |
AfterTargets |
Необязательный атрибут элемента . Список имен целевых объектов, разделенных точкой с запятой. Если указан, означает, что этот целевой объект должен выполняться после указанного целевого объекта или объектов. Это позволяет автору проекта расширять существующий набор целевых объектов, не изменяя их напрямую. Дополнительные сведения см. в разделе Порядок сборки целевых объектов. |
DependsOnTargets |
Необязательный атрибут элемента . Целевые объекты, которые должны быть выполнены, прежде чем можно будет выполнить этот целевой объект или анализ зависимостей верхнего уровня. Несколько целевых объектов разделяются точкой с запятой. |
Label |
Необязательный атрибут элемента . Идентификатор, который используется для определения или упорядочения системных и пользовательских элементов. |
Дочерние элементы
Элемент | Description |
---|---|
Задача | Создает и выполняет экземпляр задачи MSBuild. Целевой объект может содержать нуль и более задач. |
PropertyGroup | Содержит набор определяемых пользователем элементов Property . Начиная с .NET Framework 3.5 элемент Target может содержать элементы PropertyGroup . |
ItemGroup | Содержит набор определяемых пользователем элементов Item . Начиная с .NET Framework 3.5 элемент Target может содержать элементы ItemGroup . Дополнительные сведения см. в разделе Элементы. |
OnError | Вызывает один или несколько целевых объектов для выполнения, если атрибут ContinueOnError — ErrorAndStop (или false ) для задачи, завершившейся ошибкой. Целевой объект может содержать нуль и более элементов OnError . Если элементы OnError присутствуют, они должны быть последними элементами в элементе Target .Дополнительные сведения об атрибуте ContinueOnError см. в статье Элемент Task (MSBuild). |
Родительские элементы
Элемент | Description |
---|---|
Проект | Обязательный корневой элемент файла проекта MSBuild. |
Замечания
Первый целевой объект для выполнения задается во время выполнения. Целевые объекты могут иметь зависимости от других целевых объектов. Например, целевой объект для развертывания зависит от целевого объекта для компиляции. Обработчик MSBuild выполняет зависимости в том порядке, в котором они появляются в атрибуте DependsOnTargets
, слева направо. Дополнительные сведения см. в разделе Целевые объекты.
Поведение MSBuild зависит от порядка импорта, то есть всегда используется последнее обработанное определение целевого объекта с определенным атрибутом Name
.
Целевой объект выполняется только один раз во время сборки, даже если от него зависит несколько целевых объектов.
Если целевой объект пропускается, из-за того что его атрибут Condition
принимает значение false
, его можно выполнить, если он вызывается позднее в сборке и в тот момент его атрибут Condition
принимает значение true
.
До выпуска MSBuild 4 атрибут Target
возвращал все элементы, которые были заданы в атрибуте Outputs
. Для этого MSBuild приходилось записывать эти элементы в случае, если их запрашивали задачи, выполняющиеся позднее в сборке. Так как было невозможно указать, какие целевые объекты имели выходные данные, требуемые вызывающим объектам, MSBuild приходилось накапливать все элементы изо всех объектов Outputs
для всех вызываемых объектов Target
. Это приводило к проблемам масштабируемости для сборок, имеющих большое количество выходных элементов.
Если пользователь указывает Returns
для любого элемента Target
в проекте, то только те объекты Target
, у которых имеется атрибут Returns
, записывают эти элементы.
Объект Target
может содержать оба атрибута: Outputs
и Returns
. Outputs
используется с Inputs
для определения актуальности целевого объекта. Returns
, если присутствует, переопределяет значение Outputs
, чтобы определить, какие элементы возвращаются вызывающим объектам. Если Returns
не существует, то объекты Outputs
будут доступны для вызывающих объектов, за исключением случая, описанного ранее.
До выпуска MSBuild 4, если Target
включал несколько ссылок на один и тот же элемент в его объектах Outputs
, выполнялась запись этих повторяющихся элементов. В очень больших сборках с большим объемом выходных данных и большим числом взаимозависимостей проекта, это приводило к потреблению большого объема памяти из-за записи ненужных повторяющихся элементов. Если для атрибута KeepDuplicateOutputs
задано значение true
, дубликаты записываются.
Пример
В следующем примере кода показан элемент Target
, выполняющий задачу Csc
.
<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>