次のタスクがあります。これは、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)"
/>
そのため、生成される一連のファイル (コードではなくデータ) があり、これらを最終的なバイナリの場所にコピーする必要があります。
このビルドでは、Debug-All バージョン、Release-Client バージョン、Release-WebService の 3 つの構成を一度にビルドします。その理由は、同じビルド番号とまったく同じコード ベースを維持しながら、Client プロジェクトと WebService プロジェクトを「公開」し、セットアップ プロジェクトで取得するためです。
使用しようとすると: DestinationFiles="@(GeneratedFiles->'$(BinariesRoot)\%(ConfigurationToBuild.PlatformToBuild)\%(ConfigurationToBuild.FlavorToBuild)\%(RecursiveDir)%(Filename)%(Extension)')"
MSBuild は %(ConfigurationToBuild.FlavorToBuild) 部分でエラーをスローします。