Partilhar via


Novos métodos para manipulando propriedades (MSBuild) e itens

A partir de MSBuild 3.5, você pode fazer o seguinte:

  • Defina um agrupar de definição de item contém metadados que se aplica a todos os itens de projeto.

  • Dinamicamente criar, excluir, agrupar ou alterar propriedades, itens e metadados de item diretamente em um grupo de item.Você pode fazer isso em vez de usar a tarefa CreateItem e a tarefa CreateProperty.

Grupos de definição de item

TheItemDefinitionGroup elemento permite que você defina um conjunto de definições de item, que são valores de metadados que são aplicados a todos os itens no projeto, por padrão. Para obter mais informações, consulte Definições de item.

Ajustar dinamicamente os metadados em um agrupar de item

MSBuild usa o Elemento ItemGroup (MSBuild) e o Elemento PropertyGroup (MSBuild) para declarar estaticamente itens e propriedades. In MSBuild 2.0, quando você deseja criar ou modificar propriedades e os itens durante a compilação, você precisava usar o Tarefa CreateItem ou o Tarefa CreateProperty. Esse processo era complicado e não oferecia suporte a atualizações dinâmicas muito bem.No entanto, MSBuild 3.5 permite criar, excluir, agrupar ou alterar propriedades, itens e metadados de item diretamente em um grupo de item dinamicamente.

comparar os exemplos a seguir.Exemplo 1 mostra como usar a tarefa CreateItem para adicionar um parâmetro de tarefa e para criar uma nova lista de itens com os metadados.Exemplo 3 mostra o novo método de adicionar metadados diretamente no ItemGroup.

Exemplo 1: Um exemplo simples de adicionar um parâmetro de tarefa usando a tarefa CreateItem.O primeiro destino usa a tarefa CreateItem para criar uma nova lista do item chamada CultureResource dinamicamente.O segundo destino adiciona novos metadados, chamado TargetDirectory, para todos os recursos de cultura na lista original.

<Target Name="GenerateBeforeCompile">
     <CreateItem Include="SomeGeneratedCode.cs">
        <Output TaskParameter="Include" ItemName="Compile" /> 
    </CreateItem>
</Target>

<Target Name="ProcessCultureResources">
    <CreateItem Include="@(EmbeddedResource)" 
      Condition="'%(Culture)' != ''"
      AdditionalMetadata="TargetDirectory=%
      (EmbeddedResource.Culture)">
    <Output TaskParameter="Include" ItemName="CultureResource" />
    </CreateItem>
</Target>

Exemplo 2: Os resultados dos exemplos anteriores agora podem ser obtidos com a inclusão de parâmetros e metadados diretamente no ItemGroup.

<Target Name="GenerateBeforeCompile">
     <ItemGroup>
        <Compile Include="SomeGeneratedCode.cs" />
    </ItemGroup>
 </Target>
 
<Target Name="ProcessCultureResources">
    <ItemGroup>
        <CultureResource Include="@(EmbeddedResource)"
          Condition="'%(EmbeddedResource.Culture)' != ''">
             <TargetDirectory>%(EmbeddedResource.Culture) </TargetDirectory>
        </CultureResource>
    </ItemGroup>
</Target>

Removendo itens

Para omitir os itens de listas em versões anteriores do MSBuild, você precisava criar novas listas. Agora, no entanto, é possível diretamente remover itens usando o novo parâmetro remover, sistema autônomo mostrado pelo seguinte:

<ItemGroup>
    <!—Remove *.licx from the EmbeddedResource list - ->
    <EmbeddedResource Remove="*.licx" />
 
    <!—Or remove items in @(licx) from EmbeddedResource list -- >
    <EmbeddedResource Remove="@(licx)" />
</ItemGroup>

Consulte também

Conceitos

Referência de esquema do arquivo de projeto do MSBuild

Outros recursos

Conceitos do MSBuild