Как добавить ссылку на System.Web.Optimization для приложения MVC-3-convert-to-4

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

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

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

Ответ 1

Пакет 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

Ответ 2

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

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

    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 добавьте include в пакет, созданный на последнем шаге:

    @Scripts.Render("~/MyBundle")
    

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

Удалить пакет Microsoft.AspNet.Web.Optimization

Затем переустановить с помощью:

Установочный пакет Microsoft.AspNet.Web.Optimization

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

Ответ 6

Установите его из NUGet через Visual Studio Откройте Visual Studio 2010, выберите "Инструменты" → "Менеджер пакетов библиотеки" → "Менеджер пакетов"

Это откроет conslve, вставьте

Install-Package Microsoft.AspNet.Web.Optimization 

и введите. и вы закончили

Ответ 7

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

BundleTable.EnableOptimizations = **true**;

чтобы включить и изменить значение false в режиме DEBUG, чтобы отобразить все script и файлы стиля отдельно.