使用.net捆绑和缩小会丢失CSS中的图像引用

时间:2014-05-12 11:14:11

标签: .net asp.net-mvc asp.net-mvc-4 bundling-and-minification

我意识到这已经通过网络提出,但我似乎无法找到关于如何解决这个问题的明确答案。

这就是我们捆绑的方式

// iPortal Specific 
bundles.Add(new StyleBundle("~/bundles/css/MyCSS")
            .Include("~/Content/css/MyCSS.css")
            .Include("~/Content/css/MyCSSMedia.css"));

然后在_layouts页面内: -

  @Styles.Render("~/bundles/css/MyCSS")

其中" ~bundles / css / MyCSS"是一个虚拟目录,因为它不存在于服务器上。

我们的CSS结构是: -

Content
   CSS
      MyCSS.css
      _Images

其中MyCSS.css引用" _images"中的图像。夹

我们尝试过使用

.Include("~/Content/css/MyCSS.css", new CssRewriteUrlTransform())

哪个不起作用。

并尝试了

 public class CssRewriteUrlTransformWrapper : IItemTransform
{
    public string Process(string includedVirtualPath, string input)
    {
        return new CssRewriteUrlTransform().Process("~" + VirtualPathUtility.ToAbsolute(includedVirtualPath), input);
    }
}
再次,这是行不通的。

我们发现的唯一其他解决方案是更改虚拟目录以匹配物理目录,这并不是真的感觉正确,

我们错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我认为当您在html中提取生成的css文件时,它看起来像这样:

  

束/的CSS

图像位于:

  

内容/图片

CSS指向bundles/_Images,显然不存在。

我认为你有两个选择:

  1. 将图片移到顶层,这样你的CSS可以指向那里(这将捆绑或不捆绑)
  2. CssRewriteUrlTransformWrapper中的图片路径替换为../Content/_Images