Reputation: 11
When I read the value from the XML file, it is correct, but when I use it (as an option to rc.exe), it is undefined. How can I fix that?
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Read custom build number from generated XML file -->
<Target Name="ReadCustomVersion" BeforeTargets="ResourceCompile">
<XmlPeek XmlInputPath="$(OutDir)\CustomVersionNumber.xml" Query="/CustomVersion/CustomBuildNumber/text()">
<Output TaskParameter="Result" ItemName="CustomBuildNumber" />
</XmlPeek>
**<!-- Print out the custom build number -- it is correct here -->**
<Message Text="CustomBuildNumber = @(CustomBuildNumber)">
</Target>
<!-- Add version resource -->
<ItemGroup>
**<!-- CustomBuildNumber will not be set here -->**
<ResourceCompile Include="..\..\build\CommonVersionResource.rc">
<AdditionalOptions>/DBUILD_NUMBER=$(CustomBuildNumber) %(AdditionalOptions)</AdditionalOptions>
</ResourceCompile>
</ItemGroup>
</Project>
Upvotes: 1
Views: 1169
Reputation: 761
Use PropertyName attribute in XmlPeek/Output element instead of ItemName. Why you don't add AdditionalOptions directly in your ReadCusomVersion target?
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="SetCustomVersion" BeforeTargets="ResourceCompile">
<XmlPeek XmlInputPath="$(OutDir)\CustomVersionNumber.xml" Query="/CustomVersion/CustomBuildNumber/text()">
<Output TaskParameter="Result" PropertyName="CustomBuildNumber" />
</XmlPeek>
<ItemGroup>
<ResourceCompile>
<AdditionalOptions>/DBUILD_NUMBER=$(CustomBuildNumber) %(AdditionalOptions)</AdditionalOptions>
</ResourceCompile>
</ItemGroup>
</Target>
Upvotes: 2