web-dev-qa-db-ja.com

MVC-3-to-4-appにSystem.Web.Optimizationへの参照を追加する方法

私は最近MVC 3からMVC 4ベータに変換したプロジェクトで新しいバンドル機能を使用しようとしています。 global.asax、BundleTable.Bundles.RegisterTemplateBundles();のコード行が必要です。これには、先​​頭にusing System.Web.Optimization;が必要です。

これを実行すると、「アセンブリ参照を見逃していませんか」と表示される赤い波線が表示されます。参照を追加してダイアログの[.NET]タブをクリックしてA-Zからソートしても、System.Web.Optimizationが表示されません。

このrefを自分のプロジェクトに追加する方法ありがとう。

452
Ian Davis

Microsoft.Web.Optimizationパッケージは現在使用されていません。 ASP.NET(MVC)4以降では、Microsoft ASP.NET Web最適化フレームワークをインストールする必要があります。

  • 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")
            );
        }
    }
    
  • Global.asax.csのApplication_Start()からRegisterBundles()関数を呼び出します。

    using System.Web.Optimization;
    
    protected void Application_Start() {
         ...
         BundleConfig.RegisterBundles(BundleTable.Bundles);
         ...
    }
    
  • View.cshtmlにOptimization名前空間を含めてバンドルをレンダリングします。

    @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

717
mhu

ASP.Net MVC 4の最終リリース版でのアプローチは以下のとおりです。

  • Nugetを使用してMicrosoft.AspNet.Web.Optimizationをインストールします(フレームワークによってインストールされないため)。

    install-package Microsoft.AspNet.Web.Optimization
    
  • Global.asax Application_Startにバンドルを作成します。

    var scripts = new ScriptBundle("~/MyBundle");
    scripts.IncludeDirectory("~/Scripts/MyDirectory", "*.js");
    BundleTable.Bundles.Add(scripts);
    
  • "Views" web.configに "System.Web.Optimization"名前空間を追加します。

     <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Optimization" />
        </namespaces>
    </pages>
    
  • あなたのview.cshtmlで、最後のステップで作成したバンドルにインクルードを追加します。

    @Scripts.Render("~/MyBundle")
    

デバッグモードでは、ディレクトリ内のすべてのスクリプトファイルは個別にレンダリングされます。リリースモードでは、それらはバンドルされ縮小されます。

83
Noel Abrahams

Nugetからパッケージを更新(再インストール)するには、次のコマンドを使います。

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

15
M. Salah

私の場合、tfsはバイナリを除外するのでtfsの問題でした。そのためNugget PMはインストールされたナゲットを見つけてライブラリを更新しません。

  • ソース管理へ
  • ..\packages\Microsoft.Web.Optimizationに移動します。
  • Libフォルダを追加する(exclude binary extensionsをオフにする)
  • あなたの解決策を更新し、パスからdll参照を追加してください

注意:パッケージフォルダはyousolution.slnファイルと同じレベルにあります。

14
amine

次のように、パッケージマネージャコンソールでnugetを使ってSystem.Web.Optimizationをアンインストールします。

アンインストール - パッケージMicrosoft.AspNet.Web.Optimization

それから:を使って再インストールします。

インストールパッケージMicrosoft.AspNet.Web.Optimization

この問題を解決してもよろしいですか。

11
Myzifer

NUGet からVisual Studioを介してインストールするVisual Studio 2010を開き、[ツール] - > [ライブラリパッケージマネージャ] - > [パッケージマネージャコンソール]を選択します。

これでconslveが開きます

Install-Package Microsoft.AspNet.Web.Optimization 

そして入ります。そしてあなたは終わりました

6
Mian

global.asax application_start(RELEASEモードなど)で設定します。

BundleTable.EnableOptimizations = **true**;

DEBUGモードで縮小を有効にしてfalseに変更するには すべてのスクリプトとスタイルファイルを個別にレンダリングします。

2
zenichi