Сборка ASP.NET 4.5 в режиме отладки — устаревшие ресурсы

Можно ли каким-либо образом заставить функцию связывания ASP.NET 4.5 генерировать идентификаторы GUID как часть строки запроса при работе в режиме debug (например, объединение отключено).

Проблема в том, что при локальной разработке файлы скриптов/CSS генерируются следующим образом:

<script type="text/javascript" src="/Content/Scripts/myscript.js" />

Поэтому, если я изменю этот файл, мне нужно будет выполнить полное обновление (иногда несколько раз), чтобы файл был обнаружен браузером - это раздражает.

Есть ли способ сделать так, чтобы это выглядело так:

<script type="text/javascript" src="/Content/Scripts/myscript.js?v=x" />

Где x — это GUID (например, всегда уникальный).

Идеи?

Я на ASP.NET MVC 4.


person RPM1984    schedule 29.10.2012    source источник


Ответы (3)


Пока пакет NuGet не будет исправлен в соответствии с другим ответом выше, на данный момент я использовал тот же код оболочки, что и для бета-пакета NuGet:

private static IHtmlString JsUnbundled(this HtmlHelper htmlHelper, string bundlePath)
{
    var jsBuilder = new StringBuilder();
    foreach (var file in BundleResolver.Current.GetBundleContents(bundlePath))
    {
        var tagBuilder = new TagBuilder("script");
        tagBuilder.Attributes["src"] = file.AddCacheKey(); // add GUID
        tagBuilder.Attributes["type"] = "text/javascript";
        jsBuilder.AppendLine(tagBuilder.ToString());
    }
    return MvcHtmlString.Create(jsBuilder.ToString());
}

Затем у меня есть еще один помощник HTML, который проверяет, отлаживает ли, а затем использует вышеуказанное - в противном случае использует Scripts.Render.

Очевидно, что это не делает никакого хеширования файла - он ВСЕГДА будет запрашивать файл. Но я не против этого, так как это только для отладки.

person RPM1984    schedule 31.10.2012

В настоящее время мы не проверяем содержимое файлов в режиме отладки, но мы могли бы добавить эту функцию.

Я зарегистрировал это как проблему на codeplex здесь.

person Hao Kung    schedule 30.10.2012
comment
Хорошо спасибо. Угадайте, что сейчас я оберну условное условие IF DEBUG вокруг рендеринга файла, а затем добавим ключ кэша. - person RPM1984; 31.10.2012
comment
Была ли эта функция когда-либо реализована? Если да то как его включить? - person Marie; 06.09.2016