Как добавить ссылку на 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 и файлы стиля отдельно.