Как добавить ссылку на приложение System.Web.Optimization для приложения MVC-3, преобразованного в 4 - PullRequest
453 голосов
/ 28 февраля 2012

Я пытаюсь использовать новую функцию комплектации в проекте, который я недавно преобразовал из бета-версии MVC 3 в MVC 4. Требуется строка кода в global.asax, BundleTable.Bundles.RegisterTemplateBundles();, которая требует using System.Web.Optimization; вверху.

Когда я делаю это, я получаю красные волнистые линии, на которых написано: "Вы пропустили ссылку на сборку?" Когда я пытаюсь добавить ссылку и нажимаю на вкладку .NET в диалоговом окне, сортировать по A-Z, я не вижу System.Web.Optimization.

Как мне добавить эту ссылку в мой проект? Спасибо.

Ответы [ 7 ]

722 голосов
/ 11 июня 2012

Пакет Microsoft.Web.Optimization устарел. С ASP.NET (MVC) 4 и выше вы должны установить Microsoft ASP.NET Web Optimization Framework:

  • Установить пакет из nuget :

    Install-Package Microsoft.AspNet.Web.Optimization
    
  • Создание и настройка комплекта (ов) в App_Start \ BundleConfig.cs:

    public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles) {
            bundles.Add(new ScriptBundle("~/Scripts/jquery").Include(
                "~/Scripts/Lib/jquery/jquery-{version}.js",
                "~/Scripts/Lib/jquery/jquery.*",
                "~/Scripts/Lib/jquery/jquery-ui-{version}.js")
            );
    
            bundles.Add(new ScriptBundle("~/Scripts/knockout").Include(
                 "~/Scripts/Lib/knockout/knockout-{version}.js",
                 "~/Scripts/Lib/knockout/knockout-deferred-updates.js")
            );
        }
    }
    
  • Вызовите функцию RegisterBundles () из Application_Start () в вашем global.asax.cs:

    using System.Web.Optimization;
    
    protected void Application_Start() {
         ...
         BundleConfig.RegisterBundles(BundleTable.Bundles);
         ...
    }
    
  • В вашем view.cshtml включите пространство имен Оптимизация и выполните рендеринг комплекта:

    @using System.Web.Optimization
    
    @Scripts.Render("~/Scripts/jquery")
    @Scripts.Render("~/Scripts/knockout")
    

См. http://www.asp.net/mvc/overview/performance/bundling-and-minification для получения дополнительной информации

Обновление
Доступна версия 1.1.x, прочтите примечания к выпуску: https://www.nuget.org/packages/Microsoft.AspNet.Web.Optimization

83 голосов
/ 04 марта 2012

В окончательной версии ASP.Net MVC 4 подход выглядит следующим образом:

  • Установите Microsoft.AspNet.Web.Optimization через nuget (так как он не устанавливаетсяframework)

    install-package Microsoft.AspNet.Web.Optimization
    
  • Создать пакет в Global.asax Application_Start:

    var scripts = new ScriptBundle("~/MyBundle");
    scripts.IncludeDirectory("~/Scripts/MyDirectory", "*.js");
    BundleTable.Bundles.Add(scripts);
    
  • Добавить «System.Web.Optimization»пространство имен для "Views" web.config:

     <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Optimization" />
        </namespaces>
    </pages>
    
  • В вашем view.cshtml добавьте включение в пакет, созданный на последнем шаге:

    @Scripts.Render("~/MyBundle")
    

В режиме отладки все файлы скриптов в вашем каталоге будут отображаться индивидуально;в режиме выпуска они будут объединены и минимизированы.

16 голосов
/ 23 января 2015

Обновите (переустановите) пакет из nuget, вы можете использовать команду:

update-Package Microsoft.AspNet.Web.Optimization -reinstall

14 голосов
/ 14 ноября 2012

В моем случае это была проблема tfs, так как tfs исключает двоичные файлы, поэтому Nugget PM находит установленный слепок и не обновляет библиотеку. Если у вас есть похожая проблема:

  • Перейти к исходному кодуcontrol
  • Перейдите в .. \ packages \ Microsoft.Web.Optimization
  • Добавить папку lib (снимите флажок с исключающими двоичными расширениями)
  • Обновите решение и добавьте ссылку на dllиз пути

Примечание: папка пакета находится на том же уровне, что и файл yousolution.sln

11 голосов
/ 07 мая 2014

Использование nuget для удаления System.Web.Optimization в консоли диспетчера пакетов, например:

Uninstall-Package Microsoft.AspNet.Web.Optimization

Затем переустановкаиспользуя:

Install-Package Microsoft.AspNet.Web.Optimization

Может решить эту проблему для вас.

6 голосов
/ 16 июля 2013

Установите его из NUGet через Visual Studio Откройте Visual Studio 2010, выберите Сервис-> Диспетчер пакетов библиотеки-> Консоль диспетчера пакетов

Откроется консоль, вставьте

Install-Package Microsoft.AspNet.Web.Optimization 

и введите.и все готово

2 голосов
/ 29 мая 2013

установлено в Global.asax application_start (в режиме RELEASE и т. Д.):

BundleTable.EnableOptimizations = **true**;

, чтобы включить минификацию и изменить на false в режиме ОТЛАДКИ , чтобы визуализировать все файлы сценариев и стилей по отдельности.

...