20

我刚刚将一个 ASP.NET MVC 3 项目迁移到 MVC 4 / .NET 4.0,并安装了 NuGet 包Microsoft.AspNet.Web.Optimization以支持 CSS 和 JavaScript 的捆绑和缩小。我几乎可以进行捆绑/缩小工作,问题是它始终处于启用状态。即使应用程序处于调试模式(如 Web.config 中配置的那样),所有 JavaScript 包含都被缩小。从下面的 XML 片段可以看出,在 Web.config 中启用了调试模式:

<system.web>
  <compilation debug="true" targetFramework="4.0">
    ...
  </compilation>
  ...
</system.web>

我的捆绑配置的摘录:

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        ...

        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-1.*",
                    "~/Scripts/jquery.form.js",
                    "~/Scripts/jquery.format.js"));

        bundles.Add(new StyleBundle("~/Content/css").Include(
            "~/Content/Site.css"));

        ...
    }
}

CSS/JavaScript 包含在 HTML 中呈现,例如:

<link href="/content/css" rel="stylesheet" type="text/css">
<script src="/bundles/jquery" type="text/javascript"></script>

有没有人知道为什么在我的情况下启用了缩小?我不知道我在这里缺少什么。为了排除故障,我创建了一个测试 ASP.NET MVC 4 Internet 应用程序,并且可以验证 CSS/JavaScript在该项目的调试模式下没有被缩小。

编辑:

在我的 _Layout.cshtml 文件中,我呈现如下样式/脚本:

@Styles.Render("content/css")
@Scripts.Render("bundles/jquery")

感谢 Hao,我意识到我忘记在包名称前加上“~/”。

4

2 回答 2

17

危险信号是 HTML 中呈现的链接/脚本标签:

如果您使用的是 Script/Style.Render,这些应该包含版本哈希码,即

< script src="/bundles/jquery?v=wvLq7H7qEZB2giyIRn7aEZAxhHOb2RfTYYh2HMd9EqM1"/>

要获得 MVC4 模板正在使用的调试/发布行为,您还必须使用 Script/Style.Render 方法。调用这些方法时,您必须传递虚拟包路径,在您的示例中:

@Styles.Render("~/content/css")
@Scripts.Render("~/bundles/jquery")

在调试模式下,您不应该让链接/脚本标签指向捆绑包(它将始终被缩小/捆绑)。相反,您应该在调试模式下获取各个资源的脚本/链接标签。

于 2012-08-14T21:07:54.830 回答
2

我刚刚在一个全新的 ASP.NET MVC 项目上发生了这种情况。我<compilation debug="true" targetFramework="4.5.1" />在 web.config 中设置为 true 并且仍然得到缩小的输出。

修复

BundleConfig.cs(在 App_Start 中)底部有一行BundleTable.EnableOptimizations = true;覆盖了我的 web.config 设置....

删除该行和/或将其设置为 false,我将我的脚本作为调试环境中所需的未缩小/未捆绑。

我建议删除该行,因为这将覆盖 web.config。在 web.config 中设置此项具有使用 web.config 转换的优势,因此您可以创建不同的设置以部署到不同的环境。

有关这方面的更多信息,请参阅http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification并阅读控制捆绑和缩小部分(大约在文章的一半处)。

于 2014-10-10T19:24:03.007 回答