2014-08-29 61 views
1

我使用捆綁像這樣一個asp.net mvc的5項目:如何防止捆綁使用未包含在項目中的文件?

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

我已經包括在我的項目,版本1.11.0 jQueryUI的一個版本。但是,我在腳本文件夾的磁盤上也有較舊的版本(1.8.11),但未包含在項目中。

enter image description here

當我打電話@Scripts.Render("~/bundles/jqueryui"),它呈現這樣的(包括文件)。

<script src="/Scripts/jquery-ui-1.11.0.js"></script> 
<script src="/Scripts/jquery-ui-1.8.11.js"></script> 

不用說,這會導致多個問題(這也發生在css文件中)。很明顯,我可以簡單地刪除舊文件,我也可以;但我發現自己經常這樣做,因爲TFS存儲庫的另一個分支有這些舊文件。每次我們合併時,他們都會再次過來。

如何指示捆綁引擎忽略不屬於解決方案一部分的文件?

回答

3

你不能忽視那些解決方案的一部分,因爲Web應用程序運行時,有沒有解決方案文件的文件。發佈嚮導將不會部署不屬於解決方案一部分的文件。但是,如果您已經部署了多個文件,它們將全部被渲染。 我已經創建了這種只抓取最新的方法:

public static string[] GetLatestVersion(params string[] files) 
    { 
     System.Collections.Generic.List<string> latestFiles = new System.Collections.Generic.List<string>(); 
     foreach (var file in files) 
     { 
      var folder = System.IO.Path.GetDirectoryName(file); 
      var phisicalFolder = System.Web.HttpContext.Current.Server.MapPath(folder); 
      var pattern = System.IO.Path.GetFileName(file).Replace("{version}", "*"); 
      var virtualFile = folder.Replace("\\","/") + "/" + System.IO.Path.GetFileName(System.Linq.Enumerable.First(System.Linq.Enumerable.OrderByDescending(System.IO.Directory.GetFiles(phisicalFolder, pattern), x => x))); 
      latestFiles.Add(virtualFile); 
     } 
     return latestFiles.ToArray(); 
    } 

    public static void RegisterBundles(BundleCollection bundles) 
    { 

     bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
        GetLatestVersion("~/Scripts/modernizr-{version}.js"))); 
     bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        GetLatestVersion("~/Scripts/jquery-*.js"))); 
    } 
1

集版本中捆綁:

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
      "~/Scripts/jquery-ui-1.11.0.js")); 
} 
+1

嗯。我不是那麼喜歡的,我更新了很多其他捆綁文件的版本,我不得不記得在那裏做。作爲最後的手段,但我會這樣做。謝謝! – Mansfield 2014-08-29 18:22:34

+0

你可以使用通配符強制使用「〜/ Scripts/jquery-ui-1.1 * .js」這樣的1.1xxx,就像這樣你就安靜到1.2xxx :) – Pascalz 2014-08-29 18:30:10

相關問題