Como adicionar referência a System.Web.Optimization para MVC-3 convertido para 4 app

Estou tentando usar o novo recurso de empacotamento em um projeto que converti recentemente do MVC 3 para o MVC 4 beta. Requer uma linha de código em global.asax, BundleTable.Bundles.RegisterTemplateBundles(); , o que requer o using System.Web.Optimization; no topo.

Quando faço isso, recebo as linhas rabiscadas vermelhas que dizem: “Você está perdendo uma referência de assembly?” Quando tento adicionar referência e clico na guia .NET na checkbox de diálogo, classifico de AZ, não vejo System.Web.Optimization .

Como eu adiciono esta referência ao meu projeto? Obrigado.

O pacote Microsoft.Web.Optimization agora está obsoleto. Com o ASP.NET (MVC) 4 e superior, você deve instalar o Microsoft ASP.NET Web Optimization Framework:

  • Instale o pacote do nuget :

     Install-Package Microsoft.AspNet.Web.Optimization 
  • Crie e configure o (s) bundle (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") ); } } 
  • Chame a function RegisterBundles () de Application_Start () em seu global.asax.cs:

     using System.Web.Optimization; protected void Application_Start() { ... BundleConfig.RegisterBundles(BundleTable.Bundles); ... } 
  • Em seu view.cshtml, inclua o namespace de Otimização e renderize o (s) pacote (s):

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

Veja http://www.asp.net/mvc/overview/performance/bundling-and-minification para mais informações

Atualizar
Versão 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 do ASP.Net MVC 4, a abordagem é a seguinte:

  • Instale o Microsoft.AspNet.Web.Optimization via nuget (como não é instalado pelo 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 namespace “System.Web.Optimization” ao arquivo “Views” do web.config:

           
  • Na sua view.cshtml, adicione uma inclusão ao pacote criado na última etapa:

     @Scripts.Render("~/MyBundle") 

No modo de debugging, todos os arquivos de script em seu diretório serão renderizados individualmente; no modo de liberação, eles serão empacotados e reduzidos.

No meu caso, era um problema de tfs, uma vez que tfs exclui binários, então o Nugget PM encontra o nugget instalado e não atualiza a biblioteca Se você tiver um problema semelhante:

  • Ir para o controle de origem
  • Navegue até o .. \ packages \ Microsoft.Web.Optimization
  • Adicionar pasta lib (desmarque as extensões binárias exclude)
  • Atualize sua solução e adicione a referência dll do caminho

NB: a pasta do pacote está no mesmo nível do arquivo yousolution.sln

Atualize (reinstale) o pacote do nuget, você pode usar o comando:

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

Usando o nuget para desinstalar o System.Web.Optimization no console do gerenciador de pacotes da seguinte forma:

Pacote de Desinstalação Microsoft.AspNet.Web.Optimization

Em seguida, reinstalar usando:

Instalar pacote Microsoft.AspNet.Web.Optimization

Pode resolver este problema para você.

Instale-o do NUGet através do Visual Studio Abra o Visual Studio 2010, selecione Ferramentas-> Gerenciador de Pacotes da Biblioteca-> Console do Gerenciador de Pacotes

Isto irá abrir o conslve, colar

 Install-Package Microsoft.AspNet.Web.Optimization 

e entre. e você está feito

defina em Global.asax application_start (no modo RELEASE, etc.):

 BundleTable.EnableOptimizations = **true**; 

para ativar o minification e alterar para false no modo DEBUG para renderizar todos os arquivos de script e estilo individualmente.