rhe*_*one 5 web-optimization asp.net-mvc-4 bundling-and-minification asp.net-optimization bundletransformer
我目前正在开发一个项目,该项目使用ASP.NET Web Optimization库(v 1.1.0-Beta1)和Bundle Transformer扩展(v 1.7.3-Beta1用于核心,1.7.0-Beta1用于LESS)用于将LESS转换为CSS.基于Web搜索,CSS(及更少)中的路径似乎是一个常见问题,在大多数情况下,建议手动修改CSS并完成它.但是,由于我们的开发和生产环境之间的差异,并且没有拥有受影响的CSS,这样的解决方案是不可行的.
似乎存在两种解决方案.第一种是将捆绑定义的虚拟目录覆盖在包含内容的实际目录上.对我来说,这似乎是一个糟糕的选择.
其次,我选择的路线是使用IItemTransform这样的CssRewriteUrlTransform(在这篇文章中提到.即使这个解决方案也有它的局限性.因此我试图编写自己的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);
}
Run Code Online (Sandbox Code Playgroud)
IItemTransform的实现:
public class RewriteUrlTransform : IItemTransform
{
public string Process(string includedVirtualPath, string input)
{
return (input manipulated with proper path replacing bad path)
}
}
Run Code Online (Sandbox Code Playgroud)
除非我完全误解了如何IItemTransform使用,这很可能是由于缺少文档,我认为Process方法的返回是新的后处理CSS.但是,回报似乎被忽略了.原始输入始终在使用中,即使我返回时也是如此String.Empty().我在这里做错了还是确实是个错误?
不,您理解正确,项目转换在将项目捆绑在一起之前应用于项目,然后运行捆绑转换。您是否已验证它是否在调试器中按预期调用您的转换?
| 归档时间: |
|
| 查看次数: |
4101 次 |
| 最近记录: |