MSBuild合并文件

10

我正在尝试在构建过程中合并项目中的所有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个回答

15

将第6行改为:

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

@ 操作符用于处理输入为ItemGroup的情况,这是一个由分号分隔的字符串列表。

% 操作符用于将 ItemGroups 展开为字符串(属性)。


2
您正在使用的ReadLinesFromFileTask用于读取文件,它将单个文件作为输入传递给File属性(MSDN)。您无法使用此任务同时从多个文件中读取行。但是,您可以尝试使用批处理来多次运行该任务以读取每个文件的内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接