2016-09-06 66 views
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以返回正確的值,但再次顯示時,路徑爲空。

我對轉換做了什麼錯誤嗎?有沒有其他的方式來實現這一點?

回答

1

顯然這個代碼不能用於System.Web.Optimizations的1.1.0版本。升級到版本1.1.3後(並且添加程序集綁定重定向以解決與Web Grease的兼容性問題),問題中的代碼片段完美無缺地工作。