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

标签 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 可以做的事情吗?如果没有,您对如何做有任何提示吗?

我希望这是一个自动化的过程,每次构建解决方案时都会做一些事情。

最佳答案

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

  • 执行复制命令(简单理解和支持,可能会影响
    在执行大量调用的情况下建立性能);
  • 使用 ReadLinesFromFile/WriteLinesToFile msbuild 任务(很简单,但生成的文件会丢失格式)
  • 使用 .NET File.ReadAllText/WriteLinesToFile(效果不错,但在某些情况下可能会很复杂)

  • 执行复制命令

    要与复制命令合并,您应该在目标中添加类似这样的内容:
    <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" />
    

    此示例说明如何使用 native 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 注入(inject)。

    关于visual-studio - 使用 msbuild 任务将多个 jscript 文件合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3218966/

    相关文章:

    msbuild - Team City 7 在项目中找不到 DLL

    css - AjaxMin 在 css 中的@media 之后停止

    visual-studio - Visual Studio 2017 未从指定路径加载 AjaxMin MSBuild 任务

    vb.net - 我可以在 VS 2008 的 Windows 窗体设计器中将默认修饰符从 Friend 更改为 Private 吗?

    visual-studio - 将库添加到 Visual Studio 问题

    mysql - 在 vb.net 中连接到 mysql

    msbuild - 将构建配置设置为暂存

    visual-studio - 如何设置 Visual Studio 以显示首次机会异常的堆栈跟踪?

    .net - 如何从 .NET Core/Standard 项目中排除文件/文件夹?