MSBuild组合文件

时间:2012-03-23 20:27:28

标签: msbuild

我正在尝试在构建过程中将项目中的所有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行上抛出一个错误,指出“File”参数的值无效。 (当只有一个文件要合并时没有错误)

所以,有两个问题:

  1. 我做错了什么?
  2. 有没有更好的方法来组合MSBuild任务中的文件?我问这个问题是因为我知道我当前的流程删除了所有标签和空白行,对我来说这不是什么大不了的事,但仍然有点讨厌。

2 个答案:

答案 0 :(得分:14)

将第6行更改为:

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

当输入为ItemGroup时,使用@运算符,它基本上是以分号分隔的字符串列表。

%运算符用于将ItemGroup扩展为字符串(属性)。

答案 1 :(得分:2)

您用来读取文件的ReadLinesFromFileTask只需一个文件作为File属性(MSDN)的输入。您无法使用此任务一次读取多个文件中的行。但是,您可以使用batching为每个文件多次运行任务。