SORU
16 AĞUSTOS 2012, PERŞEMBE


Nasıl belirtin açık bir ScriptBundle sipariş dahil edebilir miyim?

MVC4 System.Web.Optimization 1.0 ScriptBundle feature deniyorum.

Aşağıdaki yapılandırma var:

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        // shared scripts
        Bundle canvasScripts =
            new ScriptBundle(BundlePaths.CanvasScripts)
                .Include("~/Scripts/modernizr-*")
                .Include("~/Scripts/json2.js")
                .Include("~/Scripts/columnizer.js")
                .Include("~/Scripts/jquery.ui.message.min.js")
                .Include("~/Scripts/Shared/achievements.js")
                .Include("~/Scripts/Shared/canvas.js");
        bundles.Add(canvasScripts);
    }
}

ve aşağıdaki görünümü:

<script type="text/javascript" src="@Scripts.Url(BundlePaths.CanvasScripts)"></script>

BundlePaths.CanvasScripts "~/bundles/scripts/canvas" nerede olduğunu. Bu işler:

<script type="text/javascript" src="/bundles/scripts/canvas?v=UTH3XqH0UXWjJzi-gtX03eU183BJNpFNg8anioG14_41"></script>

Şimdiye kadar çok iyi, ~/Scripts/Shared/achievements.js dışında gelen kaynak ilk senaryo. Her komut dosyası ScriptBundle önce dahil bağlıdır.Nasıl emin sırası, onur ekliyorum paket ifadeleri içerebilir?

Güncelleme

Bu nispeten yeni ASP.NET MVC 4 uygulaması olduğunu, ama optimizasyon çerçeve pre release paketini başvuru oldu. Ve http://nuget.org/packages/Microsoft.AspNet.Web.Optimization RTM paketi eklendi kaldırıldı. Hata ayıklama ile RTM sürüm=web içinde doğru olan.config, @Scripts.Render("~/bundles/scripts/canvas") doğru sırayla tek tek komut etiketleri oluşturur.

=Web yanlış hata ayıklama.config, birlikte senaryoyu ilk achievements.js komut dosyası var, ama daha sonra adı verilen bir işlev tanımı (nesne oluşturucu) bu yana, hatasız çalışır. Belki de minifier bağımlılıkları çözecek kadar zeki mi?

Ben de Darin Dimitrov hem hata ayıklama seçenekleri ile RTM ile önerilen ve aynı hareket IBundleOrderer uygulamaya çalıştı.

Minified sürümü sırada bekliyorum, ama çalışıyor.

CEVAP
16 AĞUSTOS 2012, PERŞEMBE


Demetleri onları kayıt sırasına dahil sağlayacak özel paket sipariş verir (IBundleOrderer) yazabilirsiniz:

public class AsIsBundleOrderer : IBundleOrderer
{
    public virtual IEnumerable<FileInfo> OrderFiles(BundleContext context, IEnumerable<FileInfo> files)
    {
        return files;
    }
}

ve sonra:

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        var bundle = new Bundle("~/bundles/scripts/canvas");
        bundle.Orderer = new AsIsBundleOrderer();
        bundle
            .Include("~/Scripts/modernizr-*")
            .Include("~/Scripts/json2.js")
            .Include("~/Scripts/columnizer.js")
            .Include("~/Scripts/jquery.ui.message.min.js")
            .Include("~/Scripts/Shared/achievements.js")
            .Include("~/Scripts/Shared/canvas.js");
        bundles.Add(bundle);
    }
}

ve profili:

@Scripts.Render("~/bundles/scripts/canvas")

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • apenney888

    apenney888

    27 EKİM 2010
  • calicoJake

    calicoJake

    29 EKİM 2007
  • FullMag

    FullMag

    15 ŞUBAT 2007