2013-10-23 31 views
0

我們最近升級了MVC項目到Visual Studio 2013和ASP.NET 4.5.1和含有如某些通配符的程序包:捆綁通配符不再在Visual Studio 2013的工作/ ASP.NET 4.5.1

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
         "~/Scripts/jquery-{version}.min.js")); 

已停止正確編譯。它似乎影響了'.js'之前包含更多字符的通配符,通常是最小值。

我意識到捆綁的一部分是縮小,所以它不是一些意見的必然性,但是這是什麼意圖?關於這一點,我一無所知就是發行說明。這需要付出很大的努力才能恢復和修復,因爲有時我們沒有這些腳本的常規版本。我們正在經歷其他通配符問題,但這似乎是最大的問題。我還沒有看到其他人發佈過這個問題,所以我很好奇是否有其他人注意到它,或者由於升級過程而導致配置問題。

回答

0

您不應該在您的包定義中添加min前綴。

捆紮框架如下幾種常見的約定,如:

選擇「.min」文件發佈時「FileX.min.js」和「FileX.js」 存在。選擇非「.min」版本進行調試。忽略僅用於 智能感知的「-vsdoc」 文件(例如jquery-1.7.1-vsdoc.js)。

確保優化是在web.config中啓用:

<system.web> 
    <compilation debug="false" /> 
    <!-- Lines removed for clarity. --> 
</system.web> 

或者代碼覆蓋:

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

    // Code removed for clarity. 
    BundleTable.EnableOptimizations = true; 
} 

和MVC將生成minifed jQuery的文件,喜歡的東西捆綁鏈路:

<script src="/bundles/jquery?v=OCFAn1NcaUrZ5VLi0Kt8lefDjHOF7mvtdw-2FUpZjJ01"></script> 

更新:

看來這在早期版本中也不起作用。有解決辦法通過修改BundleCollectionIgnoreList

https://stackoverflow.com/a/12005272/186822

+0

我明白束和微小如何工作。我沒有找到一個不做任何事情的理由,而是一個解釋爲什麼那些確實有效的事情突然停止了。 .min問題不是我們唯一面臨的問題。正如我在發佈說明或關於這些更改的文章中看不到任何內容 –

+0

它不支持的功能,它只是偶然的工作。在版本4的[documentation](http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification「文檔」)中,你會發現捆綁配置引用「min」文件的例子。 如果您引用'file1.min.js',捆綁引擎是否應該嘗試搜索'file.min.min.js'?如果'min.min.js'不存在,也許它應該嘗試縮小它?首先是模糊的條件。 – Nenad