Elemento Item (MSBuild)

Contiene un elemento definido por el usuario y sus metadatos. Cada elemento que se utiliza en un proyecto de MSBuild debe especificarse como elemento secundario de un elemento ItemGroup.

<Proyecto>
 <ItemGroup>
  <Elemento>

Sintaxis

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

Especificar metadatos como atributos

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.

Por ejemplo, para especificar una lista de paquetes NuGet, normalmente se usaría algo parecido a la sintaxis siguiente.

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

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

Atributos y elementos

En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.

Atributos

Atributo Descripción
Include Atributo opcional.

El archivo o comodín que se incluirá en la lista de elementos.
Exclude Atributo opcional.

El archivo o comodín que se excluirá de la lista de elementos.
Condition Atributo opcional.

La condición que se va a evaluar. Para obtener más información, consulte Condiciones.
Remove Atributo opcional.

El archivo o comodín que se quitará de la lista de elementos.

MatchOnMetadata Atributo opcional.

Modifica los atributos Remove que hacen referencia a otros elementos para que coincidan en los nombres de metadatos especificados en lugar de coincidir con los valores de los elementos a los que se hace referencia.

Este atributo solo es válido si se especifica junto con un atributo Remove que solo contiene referencias a otros elementos (por ejemplo, Remove="@(Compile);@(Content)"). Para obtener más información, consulte Elementos.
MatchOnMetadataOptions Atributo opcional.

Especifica la estrategia de coincidencia de cadenas utilizada por MatchOnMetadata. Los valores posibles son CaseSensitive, CaseInsensitive o PathLike. El valor predeterminado es CaseInsensitive.
KeepDuplicates Atributo opcional.

Especifica si se debe agregar al grupo de destino un elemento que es un duplicado exacto de un elemento existente. 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. Para obtener más información, consulte Elementos.

Este atributo solo es válido si se ha especificado para un elemento de un ItemGroup que se encuentra en un Target.
KeepMetadata Atributo opcional.

Los metadatos de los elementos de origen que se van a agregar a los elementos de destino. 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. Para obtener más información, consulte Elementos.

Este atributo solo es válido si se ha especificado para un elemento de un ItemGroup que se encuentra en un Target.
RemoveMetadata Atributo opcional.

Los metadatos de los elementos de origen que no se van a transferir a los elementos de destino. 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. Para obtener más información, consulte Elementos.

Este atributo solo es válido si se ha especificado para un elemento de un ItemGroup que se encuentra en un Target.
Update Atributo opcional. (Disponible únicamente para los proyectos de .NET Core en Visual Studio 2017 o versiones posteriores).

Permite modificar metadatos de un elemento; Normalmente se usa para invalidar los metadatos predeterminados de elementos específicos después de especificar inicialmente un grupo de elementos (por ejemplo, con un carácter comodín).

Este atributo solo es válido si se ha especificado para un elemento de un ItemGroup que no se encuentra en un Target.

Elementos secundarios

Elemento Descripción
ItemMetadata Una clave de metadatos de elemento definida por el usuario que contiene el valor de metadatos del elemento. Puede haber cero o más elementos ItemMetadata en un elemento.

Elementos primarios

Elemento Descripción
ItemGroup Elemento grouping de los elementos.

Comentarios

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. 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. Para obtener más información, consulte Elementos.

El empleo de la notación @(<myType>) permite expandir una colección de elementos de tipo <myType> en una lista de cadenas delimitada por puntos y coma, y pasarla a un parámetro. Si el parámetro es de tipo string, entonces el valor del parámetro es la lista de elementos separados por punto y coma. 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. 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. Para delimitar cada elemento mediante un carácter que no sea un punto y coma, utilice la sintaxis @(<myType>, '<separator>').

El motor de MSBuild puede evaluar comodines como * y ?, y comodines recursivos como /**/*.cs. Para obtener más información, consulte Elementos.

Ejemplos

En el ejemplo de código siguiente se muestra la declaración de dos elementos de tipo CSFile. El segundo elemento declarado contiene metadatos en los que MyMetadata está establecido en 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 glob. (Disponible únicamente para los proyectos de .NET Core en Visual Studio 2017 o versiones posteriores).

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

Vea también