2014-10-30 4 views
1

У меня есть ItemGroup, который включает в себя исходные файлы из моего проекта:Может ли MSBuild ItemGroup быть разбитым?

<ItemGroup> 
    <SourceFiles Include=".\**\*.h;.\**\*.cpp"/> 
    </ItemGroup> 

Есть несколько сотен исходных файлов. Я хочу передать их в инструмент командной строки в задаче Exec.

Если я вызываю инструмент командной строки индивидуально для каждого файла:

<Exec Command="tool.exe %(SourceFiles.FullPath)" WorkingDirectory="."/> 

Затем он работает очень медленно.

Если я позвоню инструмент командной строки и передать все файлы на одном дыхании:

<Exec Command="tool.exe @(SourceFiles -> '&quot;%(FullPath)&quot;', ' ')" WorkingDirectory="."/> 

Тогда я получаю сообщение об ошибке, если есть слишком много файлов (я предполагаю, что длина командной строки превышает некоторый максимум).

Есть ли способ, которым я могу обрезать элементы так, чтобы инструмент можно было вызывать несколько раз, каждый раз, передавая максимальное количество имен исходных файлов в инструмент?

ответ

0

Мне неизвестен какой-либо механизм для этого с хорошо известными метаданными элементов. Что вы можете сделать, это загрузить все эти пути в свою группу элементов и написать настраиваемую задачу, которая вызывает задачу exec. Написание пользовательской задачи довольно просто, это можно сделать inline:

http://msdn.microsoft.com/en-us/library/vstudio/dd722601(v=vs.100).aspx

Смежные вопросы