C# - MSBuild 参考 - 将 <itemGroup> 的所有项目复制到 CopyToOutputDirectory

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

我正在尝试将项目中的所有文件复制到输出目录。

现在我已经卸载了我的进程,在我的 "TestProject.csproj" 中,我有这些选项可以用于我要复制的项目:

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

我想要的是能够将其中的所有项目复制到文件夹,包括稍后添加的其他项目 ( ...file3.xml, file4.xml )。

我不想被迫手动向每个文件添加 "PreserveNewest" 行为,但我想使用某种 "post-compile option" 来使其工作。

有什么建议吗?

您可以使用 item definitions:

指定默认项目元数据
<ItemDefinitionGroup>
  <Content>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemDefinitionGroup>

这将作为所有 Content 项的默认值应用。您应该能够使用以下条件将其限制为仅 XML 个文件:

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