6

目前,开发人员不可能轻松地一起工作。在调试时,我们的代码缩小和捆绑被关闭,缓存破坏器也是如此。这导致每个接触 javascript 的开发人员都必须打开每个 javascript 文件并强制刷新以确保它们不会丢失更改。

我发现了一些我认为可能有用的参考资料,但还没有一个实现方案成功。

第一种是通过IBundleTransform.

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

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

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

我在转换中做错了吗?还有其他方法可以实现吗?

4

1 回答 1

1

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

于 2016-10-03T19:53:50.723 回答