简体   繁体   中英

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?

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>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM