您如何在调试时缓存清除单独呈现的文件?

How do you Cache-bust individually rendered files while debugging?

目前开发者之间无法轻松协作。在调试我们的代码缩小和捆绑时关闭,缓存破坏器也是如此。这导致每个接触 javascript 的开发人员都必须打开每个 javascript 文件并强制刷新以确保它们没有丢失更改。

我发现了一些我认为可能有用的参考,但 none 的实现已经成功。

首先是通过 IBundleTransform.

对单个 Bundle 应用转换
Public Class DebugCacheBuster
    Implements IBundleTransform

    Public Sub Process(context As BundleContext, response As BundleResponse) Implements IBundleTransform.Process
        If BundleTable.EnableOptimizations Then
            Exit Sub
        End If

        For Each file As BundleFile In response.Files
            file.IncludedVirtualPath &= GetPathHash(HostingEnvironment.MapPath(file.IncludedVirtualPath))
        Next
    End Sub
End Class

这看起来很有希望,但我无法让它发挥作用。我尝试将此 class 的新实例添加到每个包的构造函数中,并且我还尝试在创建包后遍历所有包。我的断点被击中并且 IncludedVirtualPath 似乎已经更新。继续渲染后路径未更新。

我还尝试创建一个自定义 VirtualPathProvider 和一个自定义 VirtualFile 并将 VirtualPath 覆盖为 return 正确的值,但同样,当它呈现时,路径是裸露的。

我是不是做错了什么转换?还有其他方法可以实现吗?

显然此代码不适用于 System.Web.Optimizations 的 1.1.0 版。升级到版本 1.1.3 后(并添加程序集绑定重定向以解决与 Web Grease 的兼容性问题),问题中的代码段完美无缺。