Funciones de elementos

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

A partir de MSBuild 4.0, el código de las tareas y los destinos pueden llamar a funciones de elementos para obtener información sobre los elementos del proyecto. Estas funciones simplifican la obtención de elementos Distinct() y son más rápidas que si se recorren en bucle los elementos.

Puede utilizar los métodos y propiedades de cadena en .NET Framework para trabajar con cualquier valor del elemento. Para los métodos String , especifique el nombre del método. Para las propiedades String , especifique el nombre de propiedad después de “get_”.

Para los elementos que tienen varias cadenas, el método de la cadena o ejecuta la propiedad en cada cadena.

El ejemplo siguiente se muestra cómo utilizar estas funciones de elementos de la cadena.

<ItemGroup>  
    <theItem Include="andromeda;tadpole;cartwheel" />  
</ItemGroup>  
  
<Target Name = "go">  
    <Message Text="IndexOf  @(theItem->IndexOf('r'))" />  
    <Message Text="Replace  @(theItem->Replace('tadpole', 'pinwheel'))" />  
    <Message Text="Length   @(theItem->get_Length())" />  
    <Message Text="Chars    @(theItem->get_Chars(2))" />  
</Target>  
  
  <!--  
  Output:  
    IndexOf  3;-1;2  
    Replace  andromeda;pinwheel;cartwheel  
    Length   9;7;9  
    Chars    d;d;r  
  -->  

En la tabla siguiente se muestran las funciones intrínsecas disponibles para los elementos.

FunciónEjemploDescripción
Count@(MyItem->Count())Devuelve el número de elementos.
DirectoryName@(MyItem->DirectoryName())Devuelve el equivalente Path.DirectoryName para cada elemento.
Distinct@(MyItem->Distinct())Devuelve los elementos que tienen valores distintos Include . Se omiten los metadatos. En la comparación no se distingue entre mayúsculas y minúsculas.
DistinctWithCase@(MyItem->DistinctWithCase())Devuelve los elementos que tienen valores distintos itemspec . Se omiten los metadatos. En la comparación se distingue entre mayúsculas y minúsculas.
Reverse@(MyItem->Reverse())Devuelve los elementos en orden inverso.
AnyHaveMetadataValue@(MyItem->AnyHaveMetadataValue("MetadataName", "MetadataValue"))Devuelve boolean para indicar si cualquier elemento tiene los metadatos con nombre y valor. En la comparación no se distingue entre mayúsculas y minúsculas.
ClearMetadata@(MyItem->ClearMetadata())Devuelve los elementos con sus metadatos borrados. Sólo se conserva itemspec .
HasMetadata@(MyItem->HasMetadataValue("MetadataName")Devuelve los elementos que tienen el nombre especificado de metadatos. En la comparación no se distingue entre mayúsculas y minúsculas.
Metadata@(MyItem->Metadata("MetadataName"))Devuelve los valores de metadatos que tiene el nombre de los metadatos.
WithMetadataValue@(MyItem->WithMetadataValue("MetadataName", "MetadataValue")Devuelve los elementos que tienen los metadatos con nombre y valor. En la comparación no se distingue entre mayúsculas y minúsculas.

El ejemplo siguiente se muestra cómo utilizar funciones intrínsecas del elemento.

<ItemGroup>  
    <TheItem Include="first">  
        <Plant>geranium</Plant>  
    </TheItem>  
    <TheItem Include="second">  
        <Plant>algae</Plant>  
    </TheItem>  
    <TheItem Include="third">  
        <Plant>geranium</Plant>  
    </TheItem>  
</ItemGroup>  
  
<Target Name="go">  
    <Message Text="MetaData:    @(TheItem->Metadata('Plant'))" />  
    <Message Text="HasMetadata: @(theItem->HasMetadata('Plant'))" />  
    <Message Text="WithMetadataValue: @(TheItem->WithMetadataValue('Plant', 'geranium'))" />  
    <Message Text=" " />  
    <Message Text="Count:   @(theItem->Count())" />  
    <Message Text="Reverse: @(theItem->Reverse())" />  
</Target>  
  
  <!--   
  Output:  
    MetaData:    geranium;algae;geranium  
    HasMetadata: first;second;third  
    WithMetadataValue: first;third  
  
    Count:   3  
    Reverse: third;second;first  
  -->  

elementos

Mostrar: