font-awesome在MVC5中没有使用bundleconfig

时间:2014-03-27 22:16:00

标签: css twitter-bootstrap fonts asp.net-mvc-5 font-awesome

如果我直接在_layouts页面中引用font-awesome.css。它会起作用

<link href="~/Content/font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet" />

但是我在BundleConfig.cs中使用过。图标未显示。

 bundles.Add(new StyleBundle("~/Content/css").Include(
                        "~/Content/font-awesome-4.0.3/css/font-awesome.css",
                        "~/Content/bootstrap.css",                        
                         "~/Content/body.css",
                        "~/Content/site.css",
                        "~/Content/form.css"
                     ));

我也观察到浏览器控制台对字体目录有错误。 Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:51130/fonts/fontawesome-webfont.woff?v=4.0.3

可能是什么问题?

6 个答案:

答案 0 :(得分:96)

this article所述,请在捆绑时尝试使用CssRewriteUrlTransform

bundles.Add(new StyleBundle("~/Content/css").Include(
        "~/Content/bootstrap.css",                        
        "~/Content/body.css",
        "~/Content/site.css",
        "~/Content/form.css"
    ).Include("~/Content/font-awesome-4.0.3/css/font-awesome.css", new CssRewriteUrlTransform());

这会将css文件中任何资产的URL更改为绝对URL,因此捆绑不会弄乱相对路径。

MSDN链接:CssRewriteUrlTransform

答案 1 :(得分:10)

我的解决方案很简单:运行PM&gt; Install-Package FontAwesome,和 参考正确的路径:

.Include("~/Content/font-awesome.min.css")

答案 2 :(得分:3)

我有同样的错误消息并在setting mime types for web fonts in IIS之后修复。

答案 3 :(得分:1)

我也有同样的错误信息。我必须结合这个帖子中列出的答案:

  1. 按@Simon C:

    的建议添加此行代码

    .Include(“〜/ Content / font-awesome-4.0.3 / css / font-awesome.css”,new CssRewriteUrlTransform());

  2. 这有助于修复相对网址,但是,每次我发布时,我都必须从我的bower目录中删除font-awesome.min.css文件,否则捆绑包会混淆并且不包括并缩小字体 - 真棒。 css文件。所以......

    1. 我必须做@miha在评论中建议的内容,并使用CssRewriteUrlTransform()修复font-awesome.min.css文件中的相对URL。所以我决定重写.min文件中的url,只是包含它而不是未经编译的版本,它起作用了:

      .Include(“〜/ Content / font-awesome-4.0.3 / css / font-awesome.min.css”,new CssRewriteUrlTransform());

    2. 如果我理解正确,捆绑商不会再次尝试缩小.min文件,因为它已经缩小了。唯一的“缺点”是它不会将font-awesome.min.css内容连接到捆绑器创建的单个css文件中。它将单独包含在内。

答案 4 :(得分:1)

在版本5.1.0中,我不得不引用all.css而不是fontawesome.css,即

bundles.Add(new StyleBundle("~/bundles/fontawesome").Include(
    "~/Content/all.css",
    new CssRewriteUrlTransform()
));

答案 5 :(得分:0)

如果我通过混合一些解决方案找到了解决方案,那么我对该问题添加了另一个答案。

  1. Most voted answer是主要的解决方案,但
  2. 添加this answer建议的条目。最后
  3. 按照most voted answer中@feradz的评论进行操作:“ 删除.min.css版本-这导致优化器未生成具有正确路径的缩小版本” < / li>

最后一点是关键:分布式js文件的“最小”版本,不遵循“ CssRewriteUrlTransform”规则。因此,手动删除bootstrap.min.css和font-awesone.min.css可以彻底解决此问题。