我有以下任务,由于 DestinationFiles 和 DestionationFolder 的组合不起作用,但它抓住了我想要做的概念:
<CreateItem Include="$(Destination)\**\*.Generated.*.*">
<Output TaskParameter="Include" ItemName="GeneratedFiles" />
</CreateItem>
<Copy Condition=" '%(ConfigurationToBuild.FlavorToBuild)'=='Debug-All' Or '%(ConfigurationToBuild.FlavorToBuild)'=='Release-WebService' "
SourceFiles="@(GeneratedFiles)"
DestinationFiles="@(GeneratedFiles->'%(RecursiveDir)%(Filename)%(Extension)')"
DestinationFolder="$(BinariesRoot)\%(ConfigurationToBuild.PlatformToBuild)\%(ConfigurationToBuild.FlavorToBuild)"
/>
所以我有一组正在生成的文件(数据,而不是代码),这些文件需要复制到最终的二进制文件位置。
在这个构建中,我一次构建了 3 个配置:一个 Debug-All 版本、一个 Release-Client 版本和一个 Release-WebService。原因是保持相同的内部版本号和完全相同的代码库,同时让客户端和 WebService 项目“发布”,然后由安装项目选择。
如果我尝试使用: DestinationFiles="@(GeneratedFiles->'$(BinariesRoot)\%(ConfigurationToBuild.PlatformToBuild)\%(ConfigurationToBuild.FlavorToBuild)\%(RecursiveDir)%(Filename)%(Extension)')"
MSBuild 在 %(ConfigurationToBuild.FlavorToBuild) 部分引发错误。