Как добавить ItemList в метаданные ItemDefinitionGroup по умолчанию в MSBuild? - PullRequest
2 голосов
/ 21 июля 2011

Я пытаюсь добавить все файлы в данном каталоге в параметр ForcedUsingFiles метаданных ClCompile.

Я использую следующий код:

<ItemGroup>
  <ForcedUsingFilesList Include="c:\path\to\files\*" />
</ItemGroup>
<ItemDefinitionGroup>
  <ClCompile>
    <ForcedUsingFiles>@(ForcedUsingFilesList)</ForcedUsingFiles>
  </ClCompile>
</ItemDefinitionGroup>

Но я получаю ошибку

Значение "@ (ForcedUsingFilesList)" метаданных "ForcedUsingFiles" содержит выражение списка элементов Выражения списка предметов не являются разрешено для значений метаданных по умолчанию.

Есть идеи, как обойти эту ошибку?

Спасибо

1 Ответ

6 голосов
/ 21 июля 2011

Ах, похоже, мне нужно было добавить дополнительный слой косвенности, чтобы преобразовать ItemList в свойство. Затем я могу вставить это свойство в ItemDefinitionGroup.

Следующий код добился цели, хотя есть более прямой способ сделать это:

  <ItemGroup>
    <ForcedUsingFilesList Include="c:\path\to\files\*" />
  </ItemGroup>
  <PropertyGroup>
    <ForcedUsingFilesList2>
        @(ForcedUsingFilesList->'%(FullPath)')
    </ForcedUsingFilesList2>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <ClCompile>     
      <ForcedUsingFiles>$(ForcedUsingFilesList2)</ForcedUsingFiles>
    </ClCompile>
  </ItemDefinitionGroup>
...