web-dev-qa-db-fra.com

Comment ajouter une référence à System.Web.Optimization pour l'application MVC-3 convertie en 4

J'essaie d'utiliser la nouvelle fonctionnalité de regroupement dans un projet que j'ai récemment converti de MVC 3 à MVC 4 bêta. Il nécessite une ligne de code dans global.asax, BundleTable.Bundles.RegisterTemplateBundles();, qui nécessite using System.Web.Optimization; en haut.

Lorsque je fais cela, je reçois les lignes ondulées rouges qui disent: "Vous manque-t-il une référence à l'Assemblée?" Lorsque j'essaie d'ajouter une référence et que je clique sur l'onglet .NET dans la boîte de dialogue, effectuez un tri de A à Z, je ne vois pas System.Web.Optimization.

Comment puis-je ajouter cette référence à mon projet? Merci.

454
Ian Davis

Le package Microsoft.Web.Optimization est maintenant obsolète. Avec ASP.NET (MVC) 4 et versions ultérieures, vous devez installer Microsoft Optimisation Web ASP.NET:

  • Installez le paquet à partir de nuget :

    Install-Package Microsoft.AspNet.Web.Optimization
    
  • Créez et configurez des ensembles dans 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")
            );
        }
    }
    
  • Appelez la fonction RegisterBundles () à partir de Application_Start () dans votre fichier global.asax.cs:

    using System.Web.Optimization;
    
    protected void Application_Start() {
         ...
         BundleConfig.RegisterBundles(BundleTable.Bundles);
         ...
    }
    
  • Dans votre view.cshtml, incluez l'espace de noms Optimization et rendez le (s) bundle (s):

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

Voir http://www.asp.net/mvc/overview/performance/bundling-and-minification pour plus d'informations.

Mettre à jour
La version 1.1.x est disponible, lisez les notes de publication: https://www.nuget.org/packages/Microsoft.AspNet.Web.Optimization

723
mhu

Avec la version finale d’ASP.Net MVC 4, l’approche est la suivante:

  • Installez Microsoft.AspNet.Web.Optimization via nuget (car il n'est pas installé par le framework)

    install-package Microsoft.AspNet.Web.Optimization
    
  • Créez le lot dans Global.asax Application_Start:

    var scripts = new ScriptBundle("~/MyBundle");
    scripts.IncludeDirectory("~/Scripts/MyDirectory", "*.js");
    BundleTable.Bundles.Add(scripts);
    
  • Ajoutez l'espace de noms "System.Web.Optimization" aux "vues" web.config:

     <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Optimization" />
        </namespaces>
    </pages>
    
  • Dans votre view.cshtml, ajoutez une inclusion à l'ensemble créé à la dernière étape:

    @Scripts.Render("~/MyBundle")
    

En mode débogage, tous les fichiers de script de votre répertoire seront rendus individuellement. en mode release, ils seront regroupés et minifiés.

83
Noel Abrahams

Mettez à jour (réinstallez) le paquet à partir de nuget, vous pouvez utiliser la commande:

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

16
M. Salah

Dans mon cas, il s'agissait d'un problème lié à tfs, car ce dernier exclut les fichiers binaires. Le nugget PM recherche le nugget installé et ne met pas à jour la bibliothèque. Si vous rencontrez le même problème:

  • Aller au contrôle de source
  • Accédez à la ..\packages\Microsoft.Web.Optimization
  • Ajouter le dossier lib (décochez les extensions à exclure)
  • Mettez à jour votre solution et ajoutez la référence à la DLL à partir du chemin.

NB: le dossier du package est au même niveau que le fichier yousolution.sln

14
amine

Utilisez nuget pour désinstaller System.Web.Optimization dans la console du gestionnaire de paquets, comme suit:

ninstall-Package Microsoft.AspNet.Web.Optimization

Puis réinstallez en utilisant:

Paquet d'installation Microsoft.AspNet.Web.Optimization

Peut résoudre ce problème pour vous.

11
Myzifer

Installez-le à partir de NUGet via Visual Studio Ouvrez Visual Studio 2010, sélectionnez Outils-> Gestionnaire de packages de bibliothèque-> Console du gestionnaire de packages.

Cela ouvrira le conslve, coller

Install-Package Microsoft.AspNet.Web.Optimization 

et entrez. et vous avez terminé

6
Mian

défini dans Global.asax application_start (en mode RELEASE, etc.):

BundleTable.EnableOptimizations = **true**;

pour activer la minification et remplacer par false en mode DEBUG pour afficher tous les fichiers de script et de style individuellement.

2
zenichi