私は最近MVC 3からMVC 4ベータに変換したプロジェクトで新しいバンドル機能を使用しようとしています。 global.asax、BundleTable.Bundles.RegisterTemplateBundles();
のコード行が必要です。これには、先頭にusing System.Web.Optimization;
が必要です。
これを実行すると、「アセンブリ参照を見逃していませんか」と表示される赤い波線が表示されます。参照を追加してダイアログの[.NET]タブをクリックしてA-Zからソートしても、System.Web.Optimization
が表示されません。
このrefを自分のプロジェクトに追加する方法ありがとう。
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
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")
デバッグモードでは、ディレクトリ内のすべてのスクリプトファイルは個別にレンダリングされます。リリースモードでは、それらはバンドルされ縮小されます。
Nugetからパッケージを更新(再インストール)するには、次のコマンドを使います。
update-Package Microsoft.AspNet.Web.Optimization -reinstall
私の場合、tfsはバイナリを除外するのでtfsの問題でした。そのためNugget PMはインストールされたナゲットを見つけてライブラリを更新しません。
注意:パッケージフォルダはyousolution.slnファイルと同じレベルにあります。
次のように、パッケージマネージャコンソールでnugetを使ってSystem.Web.Optimizationをアンインストールします。
アンインストール - パッケージMicrosoft.AspNet.Web.Optimization
それから:を使って再インストールします。
インストールパッケージMicrosoft.AspNet.Web.Optimization
この問題を解決してもよろしいですか。
NUGet からVisual Studioを介してインストールするVisual Studio 2010を開き、[ツール] - > [ライブラリパッケージマネージャ] - > [パッケージマネージャコンソール]を選択します。
これでconslveが開きます
Install-Package Microsoft.AspNet.Web.Optimization
そして入ります。そしてあなたは終わりました
global.asax application_start(RELEASEモードなど)で設定します。
BundleTable.EnableOptimizations = **true**;
DEBUGモードで縮小を有効にしてfalseに変更するには すべてのスクリプトとスタイルファイルを個別にレンダリングします。