ItemGroup のメタデータを宣言後に変更することは可能ですか。
例えば:
<ItemGroup>
<SolutionToBuild Include="$(BuildProjectFolderPath)\MySolution.sln">
<Targets></Targets>
<Properties></Properties>
</SolutionToBuild>
</ItemGroup>
<Target Name="BuildNumberOverrideTarget">
<!--Code to get the version number from a file (removed)-->
<!--Begin Pseudo Code-->
<CodeToChangeItemGroupMetaData
ItemToChange="%(SolutionToBuild.Properties)"
Condition ="'%(SolutionToBuild.Identity)' ==
'$(BuildProjectFolderPath)\MySolution.sln'"
NewValue="Version=$(Version)" />
<!--End Pseudo Code-->
</Target>
アイテムを削除して再度申告する必要がない方法があることを願っています。
回答をいただければ幸いです。Vaccano
ベストアンサー1
そう、あなたできる<ItemGroup>
定義後に のメタデータを変更または追加する(MSBuild 3.5)
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Define ItemGroup -->
<ItemGroup>
<TestItemGroup Include="filename.txt">
<MyMetaData>Test meta data</MyMetaData>
</TestItemGroup>
<TestItemGroup Include="filename2.txt">
<MyMetaData>Untouched</MyMetaData>
</TestItemGroup>
</ItemGroup>
<Target Name="ModifyTestItemGroup" BeforeTargets="Build">
<!-- Show me-->
<Message Text="PRE: %(TestItemGroup.Identity) MyMetaData:%(TestItemGroup.MyMetaData) OtherMetaData:%(TestItemGroup.OtherMetaData)" Importance="high" />
<!-- Now change it - can only do it inside a target -->
<ItemGroup>
<TestItemGroup Condition="'%(TestItemGroup.MyMetaData)'=='Test meta data' AND 'AnotherCondition'=='AnotherCondition'">
<MyMetaData>Well adjusted</MyMetaData>
<OtherMetaData>New meta data</OtherMetaData>
</TestItemGroup>
</ItemGroup>
<!-- Show me the changes -->
<Message Text="POST: %(TestItemGroup.Identity) MyMetaData:%(TestItemGroup.MyMetaData) OtherMetaData:%(TestItemGroup.OtherMetaData)" Importance="high" />
</Target>
<Target Name="Build" />
</Project>