Elemento Item (MSBuild)Item Element (MSBuild)

Contiene un elemento definido por el usuario y sus metadatos.Contains a user-defined item and its metadata. Cada elemento que se utiliza en un proyecto de MSBuildMSBuild debe especificarse como elemento secundario de un elemento ItemGroup.Every item that is used in a MSBuildMSBuild project must be specified as a child of an ItemGroup element.

<Project><Project>
<ItemGroup><ItemGroup>
<Item><Item>

SintaxisSyntax

<Item Include="*.cs"  
        Exclude="MyFile.cs"  
        Remove="RemoveFile.cs"  
        Condition="'String A'=='String B'" >  
    <ItemMetadata1>...</ItemMetadata1>  
    <ItemMetadata2>...</ItemMetadata2>  
</Item>  

Especificar metadatos como atributosSpecify metadata as Attributes

En MSBuild 15.1 o versiones posteriores, los metadatos con un nombre que no entre en conflicto con la lista actual de atributos pueden expresarse opcionalmente como un atributo.In MSBuild 15.1 or later, any metadata with a name that doesn't conflict with the current list of attributes can optionally be expressed as an attribute.

Por ejemplo, para especificar una lista de paquetes NuGet, normalmente se usaría algo parecido a la sintaxis siguiente.For example, to specify a list of NuGet packages, you would normally use something like the following syntax.

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json">
    <Version>9.0.1-beta1<Version>
  </PackageReference>
</ItemGroup>

Ahora, puede pasar los metadatos Version como un atributo, como se muestra en la sintaxis siguiente:Now, however, you can pass the Version metadata as an attribute, such as in the following syntax:

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json" Version="9.0.1-beta1" />  
</ItemGroup>

Atributos y elementosAttributes and Elements

En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.The following sections describe attributes, child elements, and parent elements.

AtributosAttributes

AtributoAttribute DescriptionDescription
Include Atributo necesario.Required attribute.

El archivo o comodín que se incluirá en la lista de elementos.The file or wildcard to include in the list of items.
Exclude Atributo opcional.Optional attribute.

El archivo o comodín que se excluirá de la lista de elementos.The file or wildcard to exclude from the list of items.
Condition Atributo opcional.Optional attribute.

La condición que se va a evaluar.The condition to be evaluated. Para obtener más información, consulte Condiciones.For more information, see Conditions.
Remove Atributo opcional.Optional attribute.

El archivo o comodín que se quitará de la lista de elementos.The file or wildcard to remove from the list of items.

KeepDuplicates Atributo opcional.Optional attribute.

Especifica si se debe agregar al grupo de destino un elemento que es un duplicado exacto de un elemento existente.Specifies whether an item should be added to the target group if it's an exact duplicate of an existing item. Si el elemento de origen y de destino tienen el mismo valor Include pero distintos metadatos, el elemento se agrega aunque KeepDuplicates está establecido en false.If the source and target item have the same Include value but different metadata, the item is added even if KeepDuplicates is set to false. Para obtener más información, consulte Elementos.For more information, see Items.

Este atributo solo es válido si se ha especificado para un elemento de un ItemGroup que se encuentra en un Target.This attribute is valid only if it's specified for an item in an ItemGroup that's in a Target.
KeepMetadata Atributo opcional.Optional attribute.

Los metadatos de los elementos de origen que se van a agregar a los elementos de destino.The metadata for the source items to add to the target items. Solo los metadatos cuyos nombres están especificados en la lista delimitada por punto y coma se transfieren desde un elemento de origen a un elemento de destino.Only the metadata whose names are specified in the semicolon-delimited list are transferred from a source item to a target item. Para obtener más información, consulte Elementos.For more information, see Items.

Este atributo solo es válido si se ha especificado para un elemento de un ItemGroup que se encuentra en un Target.This attribute is valid only if it's specified for an item in an ItemGroup that's in a Target.
RemoveMetadata Atributo opcional.Optional attribute.

Los metadatos de los elementos de origen que no se van a transferir a los elementos de destino.The metadata for the source items to not transfer to the target items. Todos los metadatos se transfieren desde un elemento de origen a un elemento de destino excepto aquellos cuyos nombres figuran en la lista de nombres delimitada por punto y coma.All metadata is transferred from a source item to a target item except metadata whose names are contained in the semicolon-delimited list of names. Para obtener más información, consulte Elementos.For more information, see Items.

Este atributo solo es válido si se ha especificado para un elemento de un ItemGroup que se encuentra en un Target.This attribute is valid only if it's specified for an item in an ItemGroup that's in a Target.
Update Atributo opcional.Optional attribute. (Disponible únicamente para los proyectos de .NET Core en Visual Studio 2017 o versiones posteriores).(Available only for .NET Core projects in Visual Studio 2017 or later.)

Le permite modificar los metadatos de un archivo que se ha incluido mediante un elemento glob.Enables you to modify metadata of a file that was included by using a glob.

Este atributo solo es válido si se ha especificado para un elemento de un ItemGroup que no se encuentra en un Target.This attribute is valid only if it's specified for an item in an ItemGroup that is not in a Target.

Elementos secundariosChild Elements

ElementoElement DescriptionDescription
ItemMetadataItemMetadata Una clave de metadatos de elemento definida por el usuario que contiene el valor de metadatos del elemento.A user-defined item metadata key, which contains the item metadata value. Puede haber cero o más elementos ItemMetadata en un elemento.There may be zero or more ItemMetadata elements in an item.

Elementos primariosParent Elements

ElementoElement DescriptionDescription
ItemGroupItemGroup Elemento grouping de los elementos.Grouping element for items.

ComentariosRemarks

Los elementos Item definen las entradas en el sistema de compilación y se agrupan en colecciones de elementos basadas en sus nombres de colección definidos por el usuario.Item elements define inputs into the build system, and are grouped into item collections based on their user-defined collection names. Estas colecciones de elementos se pueden utilizar como parámetros para las tareas, que utilizan los elementos individuales de las colecciones para llevar a cabo los pasos del proceso de compilación.These item collections can be used as parameters for tasks, which use the individual items in the collections to perform the steps of the build process. Para obtener más información, consulte Elementos.For more information, see Items.

Al utilizar la notación @(myType), una colección de elementos de tipo myType se puede expandir en una lista de cadenas delimitada por punto y coma y pasar a un parámetro.Using the notation @(myType) enables a collection of items of type myType to be expanded into a semicolon-delimited list of strings, and passed to a parameter. Si el parámetro es de tipo string, entonces el valor del parámetro es la lista de elementos separados por punto y coma.If the parameter is of type string, then the value of the parameter is the list of elements, separated by semicolons. Si el parámetro es una matriz de cadenas (string[]), entonces cada elemento se inserta en la matriz según la ubicación de los signos punto y coma.If the parameter is an array of strings (string[]), then each element is inserted into the array based on the location of the semicolons. Si el parámetro de tarea es de tipo ITaskItem[], el valor es el contenido de la colección de elementos junto con los metadatos adjuntos.If the task parameter is of type ITaskItem[], then the value is the contents of the item collection together with any metadata attached. Para delimitar cada elemento mediante un carácter que no sea un punto y coma, utilice la sintaxis @(myType, 'separator').To delimit each item by using a character other than a semicolon, use the syntax @(myType, 'separator').

El motor de MSBuildMSBuild puede evaluar comodines como * y ?, y comodines recursivos como /**/*.cs.The MSBuildMSBuild engine can evaluate wildcards such as * and ? and recursive wildcards such as /**/*.cs. Para obtener más información, consulte Elementos.For more information, see Items.

EjemplosExamples

En el ejemplo de código siguiente se muestra la declaración de dos elementos de tipo CSFile.The following code example shows how to declare two items of type CSFile. El segundo elemento declarado contiene metadatos en los que MyMetadata está establecido en HelloWorld.The second declared item contains metadata that has MyMetadata set to HelloWorld.

<ItemGroup>  
    <CSFile Include="engine.cs; form.cs" />  
    <CSFile Include="main.cs" >  
        <MyMetadata>HelloWorld</MyMetadata>  
    </CSFile>  
</ItemGroup>  

En el ejemplo de código siguiente se muestra cómo usar el atributo Update para modificar los metadatos de un archivo denominado somefile.cs que se ha incluido mediante un elemento glob.The following code example shows how to use the Update attribute to modify the metadata in a file called somefile.cs that was included via a glob. (Disponible únicamente para los proyectos de .NET Core en Visual Studio 2017 o versiones posteriores).(Available only for .NET Core projects in Visual Studio 2017 or later.)

<ItemGroup>
    <Compile Update="somefile.cs">  // or Update="*.designer.cs"
        <MetadataKey>MetadataValue</MetadataKey>
    </Compile>
</ItemGroup>  

Vea tambiénSee Also

Elementos Items
Propiedades de MSBuild MSBuild Properties
Referencia de esquemas de archivo del proyectoProject File Schema Reference