IItemTransform和现有的缩小文件

Rob*_*nik 27 css asp.net transformation bundling-and-minification system.web.optimization

TL; DR:IItemTransform当缩小文件已存在于与原始(非缩小)文件相同的文件夹中时,未执行.

问题解释

我有这个问题主要是因为CSS相对图像引用.如果您使用IItemTransformJavascript文件,则同样适用.

这就是我正在使用的:

  1. 我正在使用带有Web Essentials插件的Visual Studio来支持LESS文件
  2. 我正在编写LESS文件,并且Web Essentials插件会在保存时自动缩小文件
  3. 我也在我的项目中使用捆绑和缩小
  4. 在创建CSS包时,我正在使用CssRewriteUrlTransformCSS URL绝对(即背景图像),以便在将几个CSS文件捆绑在一起后图像仍然可用

到目前为止没有什么不寻常的,但它不起作用.

什么似乎是问题?

捆绑和缩小工作的方式是它试图避免过度处理.这意味着当缩小文件与原始文件存在于同一文件夹中时,它将不会运行自己的缩小,而是提供现有文件.

只要它至少会对那些预先存在的缩小文件进行转换,这样就可以了.但事实并非如此.所以我最终得到了一个捆绑包中的相对URL,这几乎打破了所有这些资源.

解决方法

  1. 始终在LESS文件中提供绝对路径
  2. 在Web Essentials设置中保存时禁用文件缩小
  3. 在定义我的软件包时请参阅缩小的文件,因为它们没有缩小版本(*.min.css没有*.min.min.css)所以minifier实际上会拾取文件并缩小,同时还运行转换它.

从我的开发过程和使用的工具(并按照它们的方式配置)的角度来看,这看起来像一个bug.如果这些文件是同一缩小过程的结果,那么这根本就不是一个错误,因为在缩小执行时将执行转换.确实,这样的功能不存在,并且可能永远不会因为应用程序需要写入权限才能使其工作.结果:这是一个错误.在缓存之前,应通过转换处理现有的缩小文件.

是否有可能以某种方式说服捆绑和缩小:

  1. 不使用现有的缩小文件版本
  2. 在现有的缩小版本上运行转换

Pet*_*nge 0

我从未使用过 LESS 或 web 必需品,所以请了解这篇文章的价值(不多)。您可以添加一个预构建命令来简单地删除旧文件,然后在需要更新 CSS 时进行重建吗。