Come aggiungere riferimento a System.Web.Optimization per l’app MVC-3-convertita-a-4

Sto cercando di utilizzare la nuova funzionalità di raggruppamento in un progetto che ho recentemente convertito da MVC 3 a MVC 4 beta. Richiede una riga di codice in global.asax, BundleTable.Bundles.RegisterTemplateBundles(); , che richiede l’ using System.Web.Optimization; in cima.

Quando faccio questo, ottengo le linee ondulate rosse che dicono “Ti manca un riferimento all’assemblaggio?” Quando provo ad aggiungere un riferimento, e faccio clic sulla scheda .NET nella finestra di dialogo, ordiniamo da AZ, non vedo System.Web.Optimization .

Come aggiungo questo riferimento al mio progetto? Grazie.

Il pacchetto Microsoft.Web.Optimization è ora obsoleto. Con ASP.NET (MVC) 4 e versioni successive è necessario installare il framework di ottimizzazione Web di Microsoft ASP.NET:

  • Installa il pacchetto da nuget :

     Install-Package Microsoft.AspNet.Web.Optimization 
  • Crea e configura i pacchetti in 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") ); } } 
  • Chiama la funzione RegisterBundles () da Application_Start () nel tuo global.asax.cs:

     using System.Web.Optimization; protected void Application_Start() { ... BundleConfig.RegisterBundles(BundleTable.Bundles); ... } 
  • Nel tuo view.cshtml includi lo spazio dei nomi Optimization e esegui il rendering dei bundle:

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

Vedi http://www.asp.net/mvc/overview/performance/bundling-and-minification per ulteriori informazioni

Aggiornare
La versione 1.1.x è disponibile, leggi le note di rilascio: https://www.nuget.org/packages/Microsoft.AspNet.Web.Optimization

Con la versione finale rilasciata di ASP.Net MVC 4 l’approccio è il seguente:

  • Installa Microsoft.AspNet.Web.Optimization via nuget (poiché non è installato dal framework)

     install-package Microsoft.AspNet.Web.Optimization 
  • Crea il pacchetto in Global.asax Application_Start:

     var scripts = new ScriptBundle("~/MyBundle"); scripts.IncludeDirectory("~/Scripts/MyDirectory", "*.js"); BundleTable.Bundles.Add(scripts); 
  • Aggiungere lo spazio dei nomi “System.Web.Optimization” al web.config “Visualizzazioni”:

           
  • Nel tuo view.cshtml aggiungi un include al pacchetto creato nell’ultimo passaggio:

     @Scripts.Render("~/MyBundle") 

In modalità di debug, tutti i file di script nella directory verranno renderizzati individualmente; in modalità di rilascio saranno raggruppati e ridotti.

Nel mio caso si trattava di un problema tfs, dal momento che tfs esclude i binari, quindi il Nugget PM trova il nugget installato e non aggiorna la libreria Se si riscontra un problema simile:

  • Vai al controllo del codice sorgente
  • Passare a .. \ packages \ Microsoft.Web.Optimization
  • Aggiungi cartella lib (deseleziona le estensioni binari di esclusione)
  • Aggiorna la tua soluzione e aggiungi il riferimento alla DLL dal percorso

NB: la cartella del pacchetto si trova nello stesso livello del file yousolution.sln

Aggiorna (reinstalla) il pacchetto da nuget, puoi usare il comando:

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

Utilizzando nuget per disinstallare System.Web.Optimization nella console del gestore pacchetti in questo modo:

Uninstall-Package Microsoft.AspNet.Web.Optimization

Quindi reinstallare utilizzando:

Pacchetto di installazione Microsoft.AspNet.Web.Optimization

Può risolvere questo problema per te.

Installa da NUGet tramite Visual Studio Apri Visual Studio 2010, seleziona Strumenti-> Gestione pacchetti libreria-> Gestione pacchetti

Questo aprirà il conslve, incolla

 Install-Package Microsoft.AspNet.Web.Optimization 

ed entra e hai finito

impostare in Global.asax application_start (in modalità RELEASE ecc.):

 BundleTable.EnableOptimizations = **true**; 

per abilitare il minification e passare a false in modalità DEBUG per rendere tutti i file di script e di stile individualmente.