MSBuild объединяет файлы - PullRequest
9 голосов
/ 24 марта 2012

Я пытаюсь объединить все файлы javascript в проекте во время процесса сборки, но это просто не работает для меня.Вот что у меня есть:

<Target Name="CombineJS">
  <CreateItem Include=".\**\*.js">
    <Output TaskParameter="Include" ItemName="jsFilesToCombine" />
  </CreateItem>

  <ReadLinesFromFile File="@(jsFilesToCombine)">
    <Output TaskParameter="Lines" ItemName="jsLines" />
  </ReadLinesFromFile>

  <WriteLinesToFile File="all.js" Lines="@(jsLines)" Overwrite="true" />
</Target>

MSBuild выдает ошибку в строке ReadLinesFromFile о том, что для параметра «Файл» указано недопустимое значение.(Нет ошибки, когда объединяется только один файл)

Итак, два вопроса:

  1. Что я делаю не так?
  2. Есть ли лучший способ объединитьфайлы в рамках задачи MSBuild?Я задаю этот вопрос, потому что я знаю, что мой текущий процесс удаляет все вкладки и пустые строки, что для меня не так уж сложно, но все же немного раздражает.

Ответы [ 2 ]

14 голосов
/ 24 марта 2012

Изменить строку 6 на:

<ReadLinesFromFile File="%(jsFilesToCombine.FullPath)">

Оператор @ используется, когда вводом является ItemGroup , который по существу представляет собой список строк, разделенных точкой с запятой.

Оператор % предназначен для развертывания ItemGroups в строки (свойства).

2 голосов
/ 24 марта 2012

ReadLinesFromFileTask, который вы используете для чтения файлов, принимает один файл как входные данные для свойства File ( MSDN ).Вы не можете использовать эту задачу для чтения строк из нескольких файлов одновременно.Однако вы можете использовать пакетирование для запуска задачи несколько раз для каждого файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...