Групповые подстановочные знаки MVC4 — * против {версия}

Я понимаю и полностью ценю новое регулярное выражение с подстановочными знаками {версия}, так как оно будет продолжать подбирать ваши библиотеки сценариев и стилей даже после обновления и т. д. Проблема в том, что я не могу заставить его работать эффективно.

Раньше я использовал следующую нотацию, чтобы подобрать свои сценарии jQuery:

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

и он подберет все файлы, соответствующие подстановочному знаку звездочки.

Но когда я попробовал следующее:

        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

Я заметил, что файл jQuery не был записан на страницу _Layout.cshtml.

ПРИМЕЧАНИЕ. Я действительно использую следующий HTML-код для обоих примеров:

@Scripts.Render("~/bundles/jquery")

Когда я использую нотацию "*" в первом примере выше, на страницу записывается следующее:

<script src="/Scripts/jquery-1.7.2.js" type="text/javascript"></script>

Однако, когда я использую нотацию "{версия}", там, где должна быть написана библиотека, есть просто пустое место. Это относится как к файлам jquery, так и к связанным с ними таблицам стилей CSS.

Неважно, компилирую ли я для режима DEBUG или RELEASE. Результаты такие же. Очевидно, что в режиме выпуска я получу оптимизированную версию при использовании обозначения «*»:

<script src="/bundles/jquery?v=VUv2YOeuOgHad-FHZ-vGMDu9wN1j9VZGifI1SBUUSMs1" type="text/javascript"></script>

Так что, будучи перфекционистом, как и все разработчики, я очень хотел бы, чтобы нотация {версия} работала для меня, так как я всегда в курсе новых выпусков и хотел бы, чтобы этот контроль над моими развертываниями.

Любое понимание того, что я могу делать неправильно, очень ценится.

Заранее спасибо, Дэн


person djmarquette    schedule 21.10.2012    source источник
comment
В какой версии .Net вы запускаете проект? Я считаю, что для .net 4.5 существует ограничение на ключевое слово {версия}.   -  person John S    schedule 01.03.2013
comment
Привет, Джон! Я действительно использую платформу .Net 4.5, и, возможно, именно поэтому возникают некоторые проблемы. Я бы подумал, что это было достаточно давно, чтобы оно заработало, хотя я не проверял, так как нотация * работает и позволяет мне двигаться вперед.   -  person djmarquette    schedule 03.03.2013
comment
У вас есть версия файла jQuery .min.js и .js в решении? В предыдущих версиях веб-оптимизации предполагалось использование файлов .min в режиме выпуска и файлов без .min в режиме отладки, даже если файл не существовал. Это поведение было изменено в более поздних версиях. См. aspnetoptimization.codeplex.com/workitem/32. Я не уверен, была ли это ваша проблема, поскольку имя файла, которое вы цитируете, не содержит .min в имени.   -  person pwdst    schedule 21.11.2013


Ответы (1)


Попробуйте обновить Microsoft.AspNet.Web.Optimization и связанные пакеты NuGet: Microsoft.Web.Infrastructure, WebGrease, Antlr. Проверьте не только вкладку «nuget.org», но и «Все».

person ranquild    schedule 20.12.2014