【发布时间】:2014-09-17 00:10:19
【问题描述】:
我在使用 font-awesome 和 ASP.NET 的优化/捆绑功能时遇到问题。
当 EnableOptimizations 设置为 false 时,我用于加载图像的字体可以完美运行:
但是,当 EnableOptimizations 设置为 true 时,不再找到字体并显示以下内容:
我注意到 GET 请求命中的路径之间存在差异:
EnableOptimizations = false:localhost:3620/Content/fonts/fontawesome-webfont.woff?v=4.1.0 EnableOptimizations = true:localhost:3620/fonts/fontawesome-webfont.svg?v=4.1.0
有问题的捆绑包如下所示:
bundles.Add(new StyleBundle("~/Content/BootstrapAndFontAwesome").Include(
"~/Content/bootstrap/bootstrapLabel.css",
"~/Content/font-awesome/font-awesome.css"
));
这是怎么回事,最好的解决方法是什么?
干杯
更新
根据 Rowan 在这篇文章的 cmets 中的建议,我从 stackoverflow answer 实现了以下代码,它已解决了我的开发机器上的问题:
public class CssRewriteUrlTransformWrapper : IItemTransform
{
public string Process(string includedVirtualPath, string input)
{
return new CssRewriteUrlTransform().Process("~" + VirtualPathUtility.ToAbsolute(includedVirtualPath), input);
}
}
我需要做一些练习部署以确保它是可靠的(例如,使用虚拟 IIS 目录等)。到目前为止看起来不错!
请注意,在采用 CssRewriteUrlTransform 解决方案时,我确实必须将 font-awesome 文件分离到它自己的包中,因为它不能与其他资源捆绑。
谢谢。
【问题讨论】:
-
你也有缩小版 (
font-awesome.min.css)? -
@StephenMuecke 是的。有一个缩小版。我相信 font-awesome css 使用的是相对路径,这就是问题所在。让我想知道为什么这在我使用 Nuget 安装时不常见。
-
这很可能是缩小文件的问题。尝试删除它,然后让捆绑器对标准文件进行压缩。
-
@StephenMuecke 我刚刚尝试了你的建议,唉,它并没有解决问题。
-
使用
CssRewriteUrlTransform有帮助吗?我不知何故记得这是一个可能的解决方案?例如bundles.Add(new StyleBundle("~/Content/mycss").Include("~/Content/font-awesome.css", new CssRewriteUrlTransform()));
标签: asp.net-mvc font-awesome bundling-and-minification