5

別のアイテム グループからフィルター処理されたアイテム グループを作成しようとしています。フィルター処理されたアイテム グループには、指定されたファイル拡張子を持つ最初のグループのアイテムのみが含まれます。

次のエラーが表示されます。

エラー MSB4190: 位置 1 の組み込みメタデータ "Extension" への参照は、この条件 "'%(Extension)'=='.sys'" では許可されていません。

これを実行すると:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
         DefaultTargets="Go"
         ToolsVersion="4.0">

  <ItemGroup>
    <Files Include="X.exe"/>
    <Files Include="Y.sys"/>
  </ItemGroup>

  <ItemGroup>
    <SysFiles Include="%(Files.Identity)" Condition="'%(Extension)'=='.sys'">
    </SysFiles>
  </ItemGroup>

  <Target Name="Go">
    <Message Text="SysFiles=@(SysFiles)"/>
  </Target>

</Project>

まず、この位置でメタデータが許可されていない理由がわかりません。msbuild の人為的な制限または実装されていない部分ですか?

第二に、この種の変換を達成するための簡潔な方法は何ですか?

どうもありがとう。

4

1 に答える 1

5

わかりました。ターゲットGo内でItemGroupSysFilesを指定すると、エラーなしで機能することがわかりました。

于 2012-11-01T13:19:44.583 に答える