【问题标题】:Ajax Minifier: JS file duplication when combining via project file / msbuild taskAjax Minifier:通过项目文件/ msbuild 任务组合时的 JS 文件重复
【发布时间】:2012-07-28 12:21:15
【问题描述】:

一段时间以来,我一直在尝试对我的 MVC3 项目进行缩小和捆绑,尝试了很多不同的压缩器和方法。我终于决定通过我的项目文件中的 msbuild 任务来使用 Microsoft Ajax Minifier。我对我的配置只有这么远,但我遇到了一个直接的绊脚石;当我将我的 JS 脚本缩小并组合到一个文件中时(使用下面的任务定义),我的组合文件总是包含每个脚本的两个缩小副本。

我已经删除了我添加的所有其他复杂的 msbuild 任务,删除了除了一个 JS 脚本之外的所有任务,而且它仍在发生。以下标签是我手动修改的项目文件的唯一部分:

<UsingTask TaskName="AjaxMin" AssemblyFile="$(MSBuildProjectDirectory)\..\_Build\AjaxMinTask.dll" />
<Target Name="AfterBuild">
    <ItemGroup>
        <JsFiles Include="**\res\js\libs\jquery.js" />
    </ItemGroup>
    <AjaxMin Switches="-global:jQuery,$" JsSourceFiles="@(JsFiles)" JsCombinedFileName="Combined.min.js" />
</Target>

Combined.min.js 是在我的 Web 项目的根目录中创建的(如预期的那样),但它包含 jquery.js 文件的两个缩小副本。

我使用的是 Microsoft Visual Studio Ultimate 2012 RC(版本 11.0.50706.0 QRELRC,2012 年 7 月),参考“AjaxMinTask.dll”文件是来自here 的最新版本 (4.59.4576.13505)。

现在,最奇怪的事情来了。此外,我在 VS 2010 和 VS 2012 中创建了全新的 MVC3 项目,并将上述行复制并粘贴到他们的项目文件中 - 仅更改 AjaxMinTask.dll 的路径(使用与损坏的项目相同的路径)和JQuery 文件 (\scripts\jquery..js) 的路径,并且它们工作得非常好

不幸的是,我无法粘贴项目文件,因为它对于堆栈溢出来说太长了,所以我将它与我试图缩小/组合的原始 jquery 文件、生成的“缩小”文件和我正在使用的 AjaxMin 程序集:

[网址已编辑]

另外,当我使用 .Net 4.0 和 MVC 3 在 Visual Studio 2012 中以发布模式构建时,我对任何其他建议的方法都持开放态度。

【问题讨论】:

    标签: msbuild projects-and-solutions csproj microsoft-ajax-minifier ajaxmin


    【解决方案1】:

    嗯,这是一个奇怪的问题……我已经设法解决了这个问题(经过几天的折腾!),方法是将“js”目录更改为另一个名称(“javascript”):

    <JsFiles Include="**\res\javascript\libs\jquery.js" />
    

    或删除路径开头的“**\”:

    <JsFiles Include="res\js\libs\jquery.js" />
    

    我怀疑这是某种错误。

    【讨论】:

    • 我敢打赌**是从 bin 文件夹下获取 .js 文件的副本,因此每个文件两次,但来自两个不同的位置
    • 我不知道,但我找不到任何详细的文档,也找不到任何不包含 ** 前缀的示例。现在整理好了,谢天谢地……我不经常把头发拉这么久!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多