461

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

これを行うと、「アセンブリ参照がありませんか?」という赤い波線が表示されます。参照を追加しようとして、ダイアログの .NET タブをクリックし、AZ から並べ替えると、System.Web.Optimization.

この参照をプロジェクトに追加するにはどうすればよいですか?

4

7 に答える 7

737

更新
バージョン 1.1.x が利用可能です。リリース ノートをお読みください: https://www.nuget.org/packages/Microsoft.AspNet.Web.Optimization


Microsoft.Web.Optimization パッケージは廃止されました。ASP.NET (MVC) 4 以降では、Microsoft ASP.NET Web Optimization Framework をインストールする必要があります。

  • 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を参照してください。

于 2012-06-11T13:06:05.633 に答える
83

ASP.Net MVC 4 の最終リリース バージョンでは、アプローチは次のようになります。

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

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

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

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

    @Scripts.Render("~/MyBundle")
    

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

于 2012-03-04T18:39:36.630 に答える
17

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

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

于 2015-01-22T21:35:57.357 に答える
14

私の場合、これは tfs の問題でした。tfs はバイナリを除外するため、Nugget PM はナゲットがインストールされていることを検出し、ライブラリを更新しません。同様の問題がある場合:

  • ソース管理に移動
  • ..\packages\Microsoft.Web.Optimization に移動します。
  • lib フォルダーを追加します (exclude binary extensions のチェックを外します)。
  • ソリューションを更新し、パスから dll 参照を追加します

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

于 2012-11-14T14:52:37.740 に答える
12

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

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

次に、次を使用して再インストールします。

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

この問題を解決できます。

于 2014-05-07T09:13:00.253 に答える
2

Global.asax application_start に設定 (RELEASE モードなど):

BundleTable.EnableOptimizations = **true**;

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

于 2013-05-29T06:53:31.017 に答える