user3397529
user3397529

Reputation: 11

MSBuild: How can I define using XmlPeek that is usable in a ResouceCompile task?

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

Answers (1)

Palo Misik
Palo Misik

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

Related Questions