20

Microsoft.AspNet.Web.OptimizationASP.NET MVC 3 プロジェクトを MVC 4 / .NET 4.0 に移行し、 CSS と JavaScript のバンドルと縮小をサポートするためにNuGet パッケージをインストールしました。バンドル/ミニフィケーションはほとんど機能していますが、問題は常に有効になっていることです。Web.config で構成されているように、アプリがデバッグ モードであっても、すべての JavaScript インクルードが縮小されます。以下の XML スニペットからわかるように、Web.config でデバッグ モードが有効になっています。

<system.web>
  <compilation debug="true" targetFramework="4.0">
    ...
  </compilation>
  ...
</system.web>

私のバンドル構成の抜粋:

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        ...

        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-1.*",
                    "~/Scripts/jquery.form.js",
                    "~/Scripts/jquery.format.js"));

        bundles.Add(new StyleBundle("~/Content/css").Include(
            "~/Content/Site.css"));

        ...
    }
}

CSS/JavaScript インクルードは、HTML で次のようにレンダリングされます。

<link href="/content/css" rel="stylesheet" type="text/css">
<script src="/bundles/jquery" type="text/javascript"></script>

私の場合、縮小化が有効になる理由について何か手がかりはありますか? ここで何が欠けているのか途方に暮れています。トラブルシューティングを行うために、テスト用の ASP.NET MVC 4 インターネット アプリケーションを作成し、このプロジェクトのデバッグ モードでCSS/JavaScript が縮小されていないことを確認できました。

編集:

私の _Layout.cshtml ファイルでは、スタイル/スクリプトを次のようにレンダリングします。

@Styles.Render("content/css")
@Scripts.Render("bundles/jquery")

Hao のおかげで、バンドル名の先頭に「~/」を付けるのを忘れていたことに気付きました。

4

2 に答える 2

17

赤い旗は、HTML でレンダリングされた link/script タグにあります。

Script/Style.Render を使用している場合、これらにはバージョン ハッシュコードが含まれている必要があります。

< script src="/bundles/jquery?v=wvLq7H7qEZB2giyIRn7aEZAxhHOb2RfTYYh2HMd9EqM1"/>

MVC4 テンプレートが使用しているデバッグ/リリース動作を取得するには、Script/Style.Render メソッドも使用する必要があります。これらのメソッドを呼び出すときは、例では仮想バンドル パスを渡す必要があります。

@Styles.Render("~/content/css")
@Scripts.Render("~/bundles/jquery")

デバッグ モードでは、バンドル (常に縮小/バンドルされます) を指すリンク/スクリプト タグを取得しないでください。代わりに、デバッグ モードで個々のリソースへのスクリプト/リンク タグを取得する必要があります。

于 2012-08-14T21:07:54.830 に答える