Поделиться через


Элемент Target (MSBuild)

Содержит набор целевых объектов для MSBuild, подлежащих последовательному выполнению.

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

Атрибуты и элементы

В следующих разделах описаны атрибуты, дочерние элементы и родительские элементы.

Атрибуты

Атрибут

Описание

Name

Обязательный атрибут.

Имя целевого объекта.

Condition

Необязательный атрибут.

Проверяемое условие.Если проверяемое условие имеет значение false, целевой объект не выполняет тело целевого объекта или другие целевые объекты, заданные атрибутом DependsOnTargets.Дополнительные сведения об условиях см. в разделе Условия MSBuild.

Inputs

Необязательный атрибут.

Входные файлы этой формы в этот целевой объект.Несколько файлов разделяются точками с запятой.Отметки времени файлов будут идти отметки времени файлов в Outputs, чтобы определить, является ли Target обновлено.Дополнительные сведения см. в разделах Инкрементные построения, Практическое руководство. Инкрементное построение и Преобразования MSBuild.

Outputs

Необязательный атрибут.

Файлы, форма выводит в этот целевой объект.Несколько файлов разделяются точками с запятой.Отметки времени файлов будут идти отметки времени файлов в Inputs, чтобы определить, является ли Target обновлено.Дополнительные сведения см. в разделах Инкрементные построения, Практическое руководство. Инкрементное построение и Преобразования MSBuild.

Returns

Необязательный атрибут.

Набор элементов, которые будут доступны для задач, которые используют это целевое значение, например, задач MSBuild.Несколько целевых объектов отделяются друг от друга точкой с запятой.Если целевые объекты в файле не имеют атрибуты Returns, атрибуты выходов используются вместо для этой цели.

KeepDuplicateOutputs

Необязательный атрибут логического типа.

Если true записывается, несколько ссылок на один и тот же элемент в целевом объекте возвращает.Значением атрибута по умолчанию является false.

BeforeTargets

Необязательный атрибут.

Список имен целевых объектов, разделенных точкой с запятой. Если он указан, указывает, что этот целевой объект должен выполняться перед указанным целевым объектом или целевыми объектами.Это позволяет автору проекта расширить существующий набор целевых объектов без изменений непосредственно.Дополнительные сведения см. в разделе Порядок построения целевого объекта.

AfterTargets

Необязательный атрибут.

Список имен целевых объектов, разделенных точкой с запятой.Если он указан, означает, что этот целевой объект должен выполняться после указанных целевого объекта и целевых объектов.Это позволяет автору проекта расширить существующий набор целевых объектов без изменений непосредственно.Дополнительные сведения см. в разделе Порядок построения целевого объекта.

DependsOnTargets

Необязательный атрибут.

Целевые объекты, которые должны быть выполнены перед тем, как можно будет выполнить этот целевой объект или произвести анализ зависимостей высшего уровня.Несколько целевых объектов отделяются друг от друга точкой с запятой.

Label

Необязательный атрибут.

Идентификатор, который может определить или упорядочить элементы системы и пользователя.

Дочерние элементы

Элемент

Описание

Задача

Создает и запускает экземпляр задачи MSBuild.Задача может содержать в цели любое число задач, включая ноль.

PropertyGroup

Содержит набор определяемых пользователем элементов Property.Начиная с .NET Framework 3.5, элемент Target может содержать элементы PropertyGroup.

ItemGroup

Содержит набор определяемых пользователем элементов Item.Начиная с .NET Framework 3.5, элемент Target может содержать элементы ItemGroup.Дополнительные сведения см. в разделе Элементы MSBuild.

OnError

Указывает один или несколько целевых объектов выполняться, если атрибут ContinueOnError ErrorAndStop (или false) для сбой задачи.В целевом объекте может содержаться любое число элементов OnError, включая ноль.Если используются элементы OnError, то они должны быть последними в элементе Target.

Дополнительные сведения об атрибуте ContinueOnError см. в разделе Элемент Task (MSBuild).

Родительские элементы

Элемент

Описание

Проект

Обязательный корневой элемент файла проекта MSBuild.

Заметки

Первый целевой объект, подлежащий выполнению, задается во время выполнения.Целевые объекты могут иметь зависимости от других целевых объектов.Например, целевой объект для развертывания зависит от целевых объектов компиляции.Программа MSBuild обрабатывает зависимости в порядке их расположения в атрибуте DependsOnTargets слева направо.Дополнительные сведения см. в разделе Цели MSBuild.

Целевой объект выполняется только один раз в ходе построения, даже если более одного целевого объекта имеют зависимости от этого целевого объекта.

Если целевой объект пропускается с связи с тем, что атрибут Condition имеет значение false, его можно выполнить, если его вызов осуществляется позже в построении, и при этом его атрибут Condition будет иметь значение true.

До 4 MSBuild 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>

См. также

Основные понятия

Цели MSBuild

Справочные сведения о схеме файлов проектов MSBuild