加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – 正确使用IItemTransform来纠正CSS捆绑ASP.NET

发布时间:2020-12-16 07:05:38 所属栏目:asp.Net 来源:网络整理
导读:我目前正在开发一个项目,该项目使用 ASP.NET Web Optimization库(v 1.1.0-Beta1)和 Bundle Transformer扩展(v 1.7.3-Beta1用于核心,1.7.0-Beta1用于LESS),用于转换很少进入CSS. 基于Web搜索,CSS(及更少)中的路径似乎是一个常见问题,在大多数情况下,建议手动
我目前正在开发一个项目,该项目使用 ASP.NET Web Optimization库(v 1.1.0-Beta1)和 Bundle Transformer扩展(v 1.7.3-Beta1用于核心,1.7.0-Beta1用于LESS),用于转换很少进入CSS.
基于Web搜索,CSS(及更少)中的路径似乎是一个常见问题,在大多数情况下,建议手动修改CSS并完成它.但是,由于我们的开发和生产环境之间的差异,并且没有拥有受影响的CSS,这样的解决方案是不可行的.

似乎存在两种解决方案.第一种是将捆绑定义的虚拟目录覆盖在包含内容的实际目录上.对我来说,这似乎是一个糟糕的选择.

其次,我选择的路线是使用IITTransform,如CssRewriteUrlTransform(在this post中提到.)即使这个解决方案也有limitations.因此我试图编写自己的ItemTransformer但似乎它的执行结果以下列方式使用时将被忽略:

public static void RegisterBundles(BundleCollection bundles)
{
    /* among other work pass in IItemTransformer to fix paths */
    var styleBundle = new StyleBundle("~/bundles/css/styles")
        .Include(...)
        .Include("~/Content/less/font-awesome.less",new RewriteUrlTransform())
        .Include(...);

    styleBundle.Transforms.Add(new CssTransformer());
    styleBundle.Orderer = new NullOrderer();

    bundles.Add(styleBundle);
}

IItemTransform的实现:

public class RewriteUrlTransform : IItemTransform
{
    public string Process(string includedVirtualPath,string input)
    {
        return (input manipulated with proper path replacing bad path)
    }
}

除非我完全误解了如何使用IItemTransform,这很可能是由于缺少文档,我认为Process方法的返回是新的后处理CSS.但是,回报似乎被忽略了.即使我返回String.Empty(),原始输入也始终在使用中.我在这里做错了还是确实是个错误?

解决方法

如果您没有正确理解这一点,项目转换将在它们捆绑在一起之前应用于项目,然后运行包变换.您是否在调试器中验证了它是否正在调用您的转换?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读