Asp.net IItemTransform和现有缩小文件

Asp.net IItemTransform和现有缩小文件,asp.net,css,transformation,bundling-and-minification,system.web.optimization,Asp.net,Css,Transformation,Bundling And Minification,System.web.optimization,TL;DR:IItemTransform在原始(未缩小)文件所在的文件夹中已存在缩小文件时,不会执行 问题解释 我有这个问题主要是因为CSS相关的图像引用。如果对Javascript文件使用IItemTransform,同样适用 这就是我正在使用的: 我正在使用Visual Studio和Web Essentials插件来支持更少的文件 我正在写更少的文件,并让Web Essentials加载项在保存时自动缩小文件 我还在我的项目中使用捆绑和缩小 在创建CSS捆绑包时,我使用CssRewrite

TL;DR
IItemTransform
在原始(未缩小)文件所在的文件夹中已存在缩小文件时,不会执行

问题解释 我有这个问题主要是因为CSS相关的图像引用。如果对Javascript文件使用
IItemTransform
,同样适用

这就是我正在使用的:

  • 我正在使用Visual Studio和Web Essentials插件来支持更少的文件
  • 我正在写更少的文件,并让Web Essentials加载项在保存时自动缩小文件
  • 我还在我的项目中使用捆绑和缩小
  • 在创建CSS捆绑包时,我使用
    CssRewriteUrlTransform
    使CSS URL成为绝对的(即背景图像),这样图像在捆绑多个CSS文件后仍然可以工作
  • 到目前为止,这里没有什么不寻常的地方,但它不起作用

    有什么问题吗? 捆绑和缩小的工作方式是尽量避免过度处理。这意味着,当缩小的文件与原始文件位于同一文件夹中时,它不会运行自己的缩小,而是为现有文件服务

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

    权变措施
  • 始终在较少的文件中提供绝对路径
  • 在保存到Web Essentials设置时禁用文件缩小
  • 定义我的捆绑包时请参考缩小的文件,因为它们没有缩小版本(*.min.css没有*.min.min.css),因此缩小器实际上会拾取文件并缩小,同时对其运行转换
  • 从我的开发过程和使用的工具(以及它们的配置方式)的角度来看,这看起来像一个bug。如果这些文件是同一个缩小过程的结果,那么这根本不是一个bug,因为在缩小过程执行时会执行转换。确实,这样的功能并不存在,而且可能永远不会存在,因为应用程序需要写权限才能工作。结果:这是一个bug。在缓存之前,应通过转换处理现有的缩小文件

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

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

  • 我从来没有使用过更少或web essentials,所以请接受这篇文章,因为它值多少钱(不多)。您可以添加一个预构建命令来简单地删除旧文件,然后在需要更新CSS时进行重建吗

    您考虑过使用Grunt吗

    它有一个学习曲线,但是,信息库是巨大的。您在web essentials中遇到的问题不会是grunt的问题

    我现在在VS中使用它来缩小、捆绑和传输css和javascript,并将文件重新组织到部署目录中。一旦设置了目录结构,grunt文件就可以很容易地重用

    使用VS中的附加组件(链接,如下),您可以右键单击grunt文件并从弹出菜单中选择要运行的grunt任务


    Grunt“任务”可以通过下载各种插件来创建,例如

    好奇的是,
    IBundleBuilder
    的修改版本是否可以工作,类似于。@MikeSmithDev:这是一个相当合理的建议,但当我已经在处理绑定文件时,我将无法再将URL相对路径更改为绝对路径,因为在绑定之前,我不知道原始文件位于何处。。。