3

BundleConfig.cs で次の ScriptBundle を定義しています。

    public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles)
        {
          bundles.Add(new ScriptBundle("~/js/yepnope").Include(
                "~/Scripts/yepnope.{version}.js"));
       }
    }

実際にはそれが唯一のバンドルではありませんが、質問に関連するのはそれだけです。残りは他のバンドル定義です。

web.configで設定された「デバッグ」モードの場合-

<compilation debug="true" targetFramework="4.5">

スクリプトの完全版と縮小版の両方がブラウザに送信されます。

<script src="/Scripts/yepnope.1.5.4-min.js"></script>
<script src="/Scripts/yepnope.1.5.4.js"></script>

スクリプトは、次のように HTML ヘルパーを使用して追加されます。

@section HeadScripts
{
    @Scripts.Render("~/js/yepnope")
}

これは、Windows 7 Professional 64 ビットの Visual Studio 2012 で実行される MVC4 プロジェクトです。

何をしても、Microsoft のドキュメントに記載されているように {version} ワイルドカードを動作させることができません-

注: EnableOptimizations が true であるか、Web.config ファイルのコンパイル要素の debug 属性が false に設定されていない限り、ファイルはバンドルまたは縮小されません。さらに、ファイルの .min バージョンは使用されず 、完全なデバッグ バージョンが選択されます。

ASP.NET MVC 4 の場合、これはデバッグ構成で、ファイル jquery-1.7.1.js がバンドルに追加されることを意味します。リリース構成では、jquery-1.7.1.min.js が追加されます。バンドル フレームワークは、次のようないくつかの一般的な規則に従います。

  • 「FileX.min.js」と「FileX.js」が存在する場合、リリースする「.min」ファイルを選択します
  • デバッグ用に「.min」以外のバージョンを選択する
  • IntelliSense でのみ使用される「-vsdoc」ファイル (jquery-1.7.1-vsdoc.js など) を無視します。

上記の {version} ワイルドカード マッチングを使用して、適切なバージョンの jQuery を含む jQuery バンドルが Scripts フォルダーに自動的に作成されます。この例では、ワイルド カードを使用すると、次の利点があります。

  • NuGet を使用して、以前のバンドル コードやビュー ページの jQuery 参照を変更せずに、新しい jQuery バージョンに更新できます。
  • デバッグ構成用のフル バージョンとリリース ビルド用の ".min" バージョンを自動的に選択します。

「EnableOptimizations」を追加すると、期待どおりに動作するようです。

他の誰かがこれに気づいた、または解決策を見つけましたか?

4

1 に答える 1

5

MVC4 は.min.jsファイルの処理方法しか知りません。認識しません-min.js(ダッシュ付き)。

私が通常これを行う方法は、簡単に成功しますが、 aと aまたはの両方を提供するライブラリによって提供される.min.jsorファイルを取り除くことです。既定では、MVC は、Web サイトを展開するときにバンドルされたファイルを自動的に縮小するため、提供されたやファイルを使用する必要はありません。-min.js.js.min.js-min.js.js.min.js-min.js

これは、必ずしも特定の質問に対する直接的な回答ではありません。問題を完全に回避する方法です。

于 2013-09-06T17:47:06.867 に答える