okkappa
okkappa

Reputation: 31

C# - MSBuild reference - Copy to CopyToOutputDirectory all items of <itemGroup>

I'm trying to copy all files in a project to an output directory.

Right now I've unloaded my process and in my "TestProject.csproj" I have these options for the item I'd like to copy:

  <ItemGroup>
    <Content Include="TEST\file1.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="TEST\file2.xml" >
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

What i want is to be able to copy all items in that to folder, included other that gonna be added later on ( ...file3.xml, file4.xml ).

I don't want to be forced to manually add to every file the "PreserveNewest" behavior, but I would like to use some sort of "post-compile option" to make it work.

Any advice?

Upvotes: 1

Views: 743

Answers (1)

Joey
Joey

Reputation: 354536

You can specify default item metadata with item definitions:

<ItemDefinitionGroup>
  <Content>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemDefinitionGroup>

This would apply as a default to all Content items. You should be able to constrain this to only XML files by using a condition:

<ItemDefinitionGroup>
  <Content>
    <CopyToOutputDirectory Condition="'%(Content.Extension)'=='.xml'">PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemDefinitionGroup>

Upvotes: 2

Related Questions