Como adicionar referência ao sistema.Site.Optimization for MVC-3-converted-to-4 app
using System.Web.Optimization;
no topo.
Quando faço isto, fico com as linhas vermelhas que dizem: "estás a perder uma referência à Assembleia?"Quando tento adicionar referência, e carrego na página. NET da janela, ordenar a partir de A-Z, não vejo System.Web.Optimization
.
Como acrescento este árbitro ao meu projecto? Obrigado.
7 answers
A Microsoft.Site.O pacote de otimização está agora obsoleto. Com ASP.NET (MVC) 4 e superior você deve instalar a Microsoft ASP.NET Web Optimization Framework:
-
Instale o pacote de nuget:
Install-Package Microsoft.AspNet.Web.Optimization
-
Criar e configurar o pacote(S) em 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") ); } }
-
Ligue para a função RegisterBundles() da Application_Start () no seu global.asax.cs:
using System.Web.Optimization; protected void Application_Start() { ... BundleConfig.RegisterBundles(BundleTable.Bundles); ... }
-
Na sua opinião.cshtml incluir o espaà § o de nomes de optimizaà § à £ o e renderizar o(s) Pacote (s):
@using System.Web.Optimization @Scripts.Render("~/Scripts/jquery") @Scripts.Render("~/Scripts/knockout")
Ver http://www.asp.net/mvc/overview/performance/bundling-and-minification Para mais informações
Actualizar
Version 1.1.x está disponível, leia as notas de lançamento: https://www.nuget.org/packages/Microsoft.AspNet.Web.Optimization
Com a versão final lançada de ASP.Net MVC 4 a abordagem é a seguinte:
-
Instale A Microsoft.AspNet.Site.Optimization via nuget (uma vez que não está instalado no framework)
install-package Microsoft.AspNet.Web.Optimization
-
Crie o pacote no Global.asax Application_Start:
var scripts = new ScriptBundle("~/MyBundle"); scripts.IncludeDirectory("~/Scripts/MyDirectory", "*.js"); BundleTable.Bundles.Add(scripts);
-
Adicione o " sistema.Site.Optimization "namespace to the" Views " web.configuração:
<pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Optimization" /> </namespaces> </pages>
-
Na sua opinião.CSHTML adicionar uma inclusão ao pacote criado na última Passo:
@Scripts.Render("~/MyBundle")
No modo de depuração, todos os ficheiros de programas da sua pasta irão ser desenhados individualmente; no modo de libertação serão agrupados e minificados.
No meu caso, era um problema do tfs, uma vez que o tfs exclui binários, por isso o MP do Nugget encontra o nugget instalado e não actualiza a biblioteca Se tiver problemas semelhantes:
- Ir para o controlo de origem
- navegue para o..\pacotes\Microsoft.Site.Optimization
- Adicionar uma pasta lib (desligue a opção Excluir as extensões Binárias)
- actualize a sua solução e adicione a referência dll do path
NB: a pasta de pacotes está no mesmo nível da sua resolução.sln ficheiro
Actualizar( reinstalar) o pacote do nuget, poderá usar o comando:
update-Package Microsoft.AspNet.Web.Optimization -reinstall
Usar o nuget para desinstalar o sistema.Site.Optimização na consola do Gestor de pacotes como esta:
Desinstalar O Pacote Microsoft.AspNet.Site.Optimização
Então reinstalando usando:
Install-Package Microsoft.AspNet.Site.Optimização
Pode resolver este problema por si.Instale - o a partir de NUGet através do Visual Studio Open Visual Studio 2010, select Tools - > Library Package Manager - > Package Manager Console
Isto vai abrir a conslve, colar
Install-Package Microsoft.AspNet.Web.Optimization
E entra. e você acabou.
A nível Global.asax application_start (no modo de libertação, etc.) :
BundleTable.EnableOptimizations = **true**;
Para activar a minificação e mudar para false no modo de depuração para desenhar todos os ficheiros de programas e estilos individualmente.