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」を追加すると、期待どおりに動作するようです。
他の誰かがこれに気づいた、または解決策を見つけましたか?