ASP.NET MVC 4 app捆绑和缩小,为什么在调试模式下启用缩小?

akn*_*ds1 19 asp.net-mvc-4 bundling-and-minification asp.net-optimization

我刚刚将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>
Run Code Online (Sandbox Code Playgroud)

我的捆绑配置的摘录:

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"));

        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

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

<link href="/content/css" rel="stylesheet" type="text/css">
<script src="/bundles/jquery" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么在我的情况下启用缩小?我不知道我在这里失踪了什么.要解决我创建了一个测试ASP.NET MVC 4的互联网应用,并可以验证CSS/JavaScript的并没有在调试模式下获得精缩为这个项目.

编辑:

在我的_Layout.cshtml文件中,我像这样渲染样式/脚本:

@Styles.Render("content/css")
@Scripts.Render("bundles/jquery")
Run Code Online (Sandbox Code Playgroud)

感谢Hao,我意识到我忘了用"〜/"作为包名称的前缀.

Hao*_*ung 17

红旗标记是HTML中呈现的链接/脚本标记:

如果您使用Script/Style.Render,它们应包含版本哈希码,即

< script src="/bundles/jquery?v=wvLq7H7qEZB2giyIRn7aEZAxhHOb2RfTYYh2HMd9EqM1"/>
Run Code Online (Sandbox Code Playgroud)

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

@Styles.Render("~/content/css")
@Scripts.Render("~/bundles/jquery")
Run Code Online (Sandbox Code Playgroud)

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