使用msbuild任务将多个jscript文件合并为一个?

时间:2010-07-10 11:19:24

标签: visual-studio msbuild microsoft-ajax-minifier

我使用Microsoft Ajax Minifier将file1.js转换为file1.min.js。现在我想把file1.min.js和file2.min.js合并到files-merged.min.js。

我找到了几个开源的msbuild项目,但没有关于如何使用它们的文档!

我正在使用Visual Studio 2010,这是Ajax Minifier可以做的事情,如果不是,你有任何关于如何做的提示吗?

我希望这是一个自动化过程,每次构建解决方案时都会完成。

3 个答案:

答案 0 :(得分:2)

我按照这篇文章做到了:

http://encosia.com/2009/05/20/automatically-minify-and-combine-javascript-in-visual-studio/

我不想使用JSMin工具,因为我已经有了AJAX Minifier,所以我只使用JSMin来合并文件。 Minifier可以处理合并文件吗?

答案 1 :(得分:2)

在MSBild解决方案中,您可以使用至少三种方法。

  1. 执行复制命令(只是理解和支持,可能会影响 在多次通话的情况下建立性能);
  2. 使用ReadLinesFromFile / WriteLinesToFile msbuild任务(足够简单,但生成的文件将丢失格式)
  3. 使用.NET File.ReadAllText / WriteLinesToFile(效果不错,但在某些情况下可能会很复杂)
  4. 执行复制命令

    要与复制命令合并,您应该将这样的内容添加到目标中:

    <Exec Command="COPY /b file1.min.js + file2.min.js files-merged.min.js" />
    

    在大多数情况下,它应该足够了。

    使用ReadLinesFromFile / WriteLinesToFile msbuild任务

    <ItemGroup>
      <SourceFiles Include="file1.min.js;file2.min.js" />
    </ItemGroup>
    
    <ReadLinesFromFile File="%(SourceFiles.Identity)">
      <Output TaskParameter="Lines" ItemName="FileLines" />
    </ReadLinesFromFile>
    
    <WriteLinesToFile File="files-merged.min.js" Lines="@(FileLines)" Overwrite="true" />
    

    此示例说明如何使用本机msbuild工具合并这两个文件。不幸的是,在这种情况下,我们正在丢失文件格式。

    使用.NET File.ReadAllText()和msbuild WriteLinesToFile

    <ItemGroup>
      <SourceFiles Include="arrays.cmd;cp.cmd" />
      <FileLines Include="$([System.IO.File]::ReadAllText(%(SourceFiles.Identity)))" />
    </ItemGroup>
    
    <WriteLinesToFile File="test.out" Lines="@(FileLines)" Overwrite="true" />
    

    这种方法快速而准确,但使用了某种.NET注入。

答案 2 :(得分:1)

C:\Progra~1\Microsoft\Micros~1\AjaxMin.exe js1.js js2.js -o jscombine.js -clobber