2014-09-17 23 views
5

Font-awesome ve ASP.NET'in en iyileştirme/paketleme özelliği ile ilgili bir sorun yaşıyorum.Font-Awesome EnableOptimizations Paketleme Başarısız Olma İsteği Başarısız Ol

EnableOptimizations false olarak ayarlanır

, bir yükleme görüntüsü için kullanıyorum yazı mükemmel çalışıyor: enter image description here

Ancak EnableOptimizations true ayarlandığında, yazı tipi tespit edilmediğinde geçerlidir ve şudur görüntülenen: enter image description here

ben GET istekleri vuruyorsun yol arasında bir eşitsizlik olduğunu fark ettik:

EnableOptimizations = false: localhost:? 3620/İçerik/yazı/fontawesome-webfont.woff v = 4.1.0 EnableOptimizations = true: localhost: 3620/yazı/fontawesome-webfont.svg v = 4.1.0

Söz konusu paket şuna benzer:? Ne oluyor

bundles.Add(new StyleBundle("~/Content/BootstrapAndFontAwesome").Include(
    "~/Content/bootstrap/bootstrapLabel.css", 
    "~/Content/font-awesome/font-awesome.css" 
    )); 

Burada ve bunu düzeltmenin en iyi yolu nedir?

public class CssRewriteUrlTransformWrapper : IItemTransform 
{ 
    public string Process(string includedVirtualPath, string input) 
    { 
     return new CssRewriteUrlTransform().Process("~" + VirtualPathUtility.ToAbsolute(includedVirtualPath), input); 
    } 
} 
:

Alkış

Güncelleme bu yazı için yorumlarda Rowan'ın önerisi üzerine

, benim dev makine üzerinde problem belirlemiştir bu stackoverflow answer aşağıdaki kodu uygulamaya

Sabit olduğundan emin olmak için birkaç uygulama konuşması yapmam gerekecek (örneğin sanal IIS dizinleri vb. Kullanın). Şimdiye kadar iyi görünüyor!

CssRewriteUrlTransform çözümünü benimserken, başka bir kaynakla birleştirilemediği için font-awesome dosyasını kendi paketine ayırmam gerektiğini unutmayın.

Teşekkürler.

+0

Ayrıca birleştirilmiş bir sürümünüz var mı ('font-awesome.min.css')? –

+0

@StephenMuecke evet. Bir küçültülmüş versiyonu var. Font-awesome css'nin göreceli bir yol kullandığını ve sorunun nerede olduğu konusunda inanıyorum. Bunun niçin Nuget'i kullanarak kurduğumun yaygın bir şey olmadığını merak ediyor. – onefootswill

+0

Bu, minified dosyasıyla ilgili bir sorun olabilir. Silmeyi deneyin ve paketleyicinin standart dosyanın küçültülmesini sağlayın. –

cevap

5

CssRewriteUrlTransform'u kullanın.

URL'ler mutlak olarak yeniden yazar, böylece öğeler demetlemeden sonra hala bulunacaktır.

Örnek:

Bu sorunu veya url göreli kaynaklara başvuruda herhangi css dosyasını çözmeye yardımcı olacak Sytem.Web.Optimization ad alanında CssRewriteUrlTransform adlı küçük bir bilgi sınıfı var
bundles.Add(new StyleBundle("~/Content/mycss") 
    .Include("~/Content/font-awesome.css", new CssRewriteUrlTransform())); 
0

.

bundles.Add(new StyleBundle("~/content/smartadmin") 
      .Include("~/content/css/font-awesome.css", new CssRewriteUrlTransform()) 
      .Include("~/content/css/dataTables.responsive.css") 
      .IncludeDirectory("~/content/css", "*.min.css")); 
1

This SO post bu konuya yararlı bir çözümü vardır ve aslında ASP.net Paketi kodu Microsoft için çalışan birinden tarafından yazılmış gibi görünüyor: Yeni kod artık bir şey gibi görünür.

konu css dosyalarında simgeler/görüntüler paket sizin ayrıştırılmış css dosyaları olarak aynı uygulama göreli yol yaşamayan yani eğer , göreli yolları kullanarak olduklarını çok muhtemeldir ki, onlar kırık haline bağlantıları.

Biz todo listesinde css URL'ler rebasing var, ama şimdilik, yapılacak Easist şey demeti yolu böylece göreli URL'ler sadece işe css dizinde, yani benziyor sahip olmaktır:

new StyleBundle("~/Static/Css/bootstrap/bundle") 

Güncelleme: otomatik görüntü URL'ler yeniden yazmak yüzden biz 1.1beta1 sürümde bu desteği geldi, otomatik olarak bu rebasing yapan yeni ItemTransform ekleyebilir.


Bu

bundles.Add(new StyleBundle("~/bundles/publiccss").Include(
      "~/Static/Css/bootstrap/bootstrap.css", 
      "~/Static/Css/bootstrap/bootstrap-padding-top.css", 
      "~/Static/Css/bootstrap/bootstrap-responsive.css", 
      "~/Static/Css/bootstrap/docs.css", new CssRewriteUrlTransform())); 

nedeniyle düzgün kullanılmayan göreli yollara, üretim sunucusunda, Yazı Müthiş simgeleri 404 hataları almak ile sorunumu sabit.

bundles.Add(new StyleBundle("~/Content/font-awesome/css/bundle").Include(
     "~/Content/font-awesome/css/font-awesome.css", new CssRewriteUrlTransform())); 
İlgili konular