1

XML ファイルから値を読み取ると正しいのですが、(rc.exe のオプションとして) 使用すると未定義になります。どうすれば修正できますか?

<?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>
4

1 に答える 1

2

ItemName の代わりに XmlPeek/Output 要素で PropertyName 属性を使用します。ReadCusomVersion ターゲットに追加オプションを直接追加しないのはなぜですか?

<?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>

于 2014-03-09T22:01:28.960 に答える