Подтвердить что ты не робот

Приложение ASP.NET MVC 4 со связью и минификсацией, почему включен режим миниатюр в режиме отладки?

Я только что перенес проект ASP.NET MVC 3 в MVC 4/.NET 4.0 и установил пакет NuGet Microsoft.AspNet.Web.Optimization, чтобы поддерживать связывание и минимизацию CSS и JavaScript. У меня довольно много работы по связыванию/минимизации, проблема в том, что она всегда включена. Несмотря на то, что приложение находится в режиме отладки, как указано в Web.config, все включенные JavaScript включены. Как видно из приведенного ниже фрагмента XML, режим debug включен в 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>

Есть ли у кого-нибудь подсказка, почему в моем случае включена функция minification? Я в недоумении относительно того, чего мне здесь не хватает. Чтобы устранить неполадки, я создал тестовое интернет-приложение ASP.NET MVC 4 и мог убедиться, что CSS/JavaScript не был включен в режим отладки для этого проекта.

EDIT:

В моем файле _Layout.cshtml я визуализую стили/скрипты следующим образом:

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

Благодаря Хао, я понимаю, что я забыл приписать имена пакетов с ~ ~/".

4b9b3361

Ответ 1

Красный флаг со ссылками / script тегами, отображаемыми в вашем HTML:

Они должны содержать хэш-код версии, если вы используете Script/Style.Render, i.e.

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

Чтобы получить поведение отладки/выпуска, которое используют шаблоны MVC4, вы также должны использовать методы Script/Style.Render. При вызове этих методов вы должны передать виртуальные пучки пакетов в вашем примере:

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

В режиме отладки вы не должны получать теги link/ script, указывающие на комплект (который всегда будет минимизирован/в комплекте). Вместо этого вы должны получать теги Script/link для отдельных ресурсов в режиме отладки.

Ответ 2

Я только что это произошло в новом проекте ASP.NET MVC. Я установил <compilation debug="true" targetFramework="4.5.1" /> в true в web.config и все еще получал миниатюрный вывод.

Исправить

BundleConfig.cs(в App_Start) имеет строку внизу BundleTable.EnableOptimizations = true;, которая переопределяет мою настройку web.config....

Удалите строку и/или установите ее в false, и я получил мои сценарии как unminified/unfundled по желанию в среде отладки.

Я рекомендую удалить строку, так как это переопределит web.config. У этого параметра в web.config есть преимущество использования преобразований web.config, чтобы вы могли создавать разные настройки для развертывания в разных средах.

Для получения дополнительной информации об этом см. http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification и прочитайте раздел Контроллинг группировки и минимизации (примерно половина пути к статье).