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


Целевой элемент (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>

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

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

Attributes

Свойство Description
Name Обязательный атрибут.

Имя целевого объекта. Целевое имя может содержать любой символ, кроме $@()%*?..
Condition Необязательный атрибут.

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

Файлы, которые формируют входные данные в этот целевой объект. Несколько файлов разделены точкой с запятой. Метки времени файлов будут сравниваться с метками времени файлов для Outputs определения Target актуальности. Дополнительные сведения см. в разделе "Добавочные сборки", "Практическое руководство. Создание добавочного и преобразования".
Outputs Необязательный атрибут.

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

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

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

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

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

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

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

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

Элемент Description
Задача Создает и выполняет экземпляр задачи MSBuild. В целевом объекте может быть не более нулевых или более задач.
PropertyGroup Содержит набор определяемых Property пользователем элементов. Элемент Target может содержать PropertyGroup элементы.
ItemGroup Содержит набор определяемых Item пользователем элементов. Элемент Target может содержать ItemGroup элементы. Дополнительные сведения см. в разделе "Элементы".
OnError Вызывает выполнение одного или нескольких целевых объектов, если ContinueOnError атрибут — ErrorAndStop (или false) для задачи с ошибкой. В целевом объекте может быть не более нулевых OnError элементов. Если OnError элементы присутствуют, они должны быть последними элементами в элементе Target .

Сведения об атрибуте ContinueOnError см. в разделе "Элемент Task ( MSBuild)".

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

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

Замечания

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

MSBuild зависит от порядка импорта, а последнее определение целевого объекта с определенным Name атрибутом используется.

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

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

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

Если пользователь указывает Returns элемент в проекте Target , то только те Target, у которых есть Returns атрибут, записывают эти элементы.

Может Target содержать как атрибут, Outputs так и Returns атрибут. Outputs используется для Inputs определения того, является ли целевой объект up-to-date. ReturnsПри наличии переопределяет значение Outputs , определяющее, какие элементы возвращаются вызывающим элементам. Если Returns он отсутствует, то Outputs будет доступен вызывающим абонентам, за исключением описанного выше случая.

Перед MSBuild 4 в любой момент, когда Target включено несколько ссылок на один и тот же элемент, Outputsэти повторяющиеся элементы будут записаны. В очень больших сборках, которые имели большое количество выходных данных и многие взаимозависимости проектов, это приведет к тому, что большое количество памяти будет потрачено, так как дублирующиеся элементы не используются. KeepDuplicateOutputs Если для атрибута задано trueзначение, эти дубликаты записываются.

Example

В следующем примере кода показан 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>

См. также