更新:为了解决这个问题,我创建了一个简单的filewatcher,它将“触摸”引用包含文件的任何父文件的修改日期。详情请见我们的博客http://offroadcode.com/blog/2010/4/28/xsltouch,-taking-the-pain-out-of-editing-included-xslt-templates/ /更新
好的,所以我在一个文件中有一个方便模板的XSL文件,其中包含一些其他XSL文件(使用)以保持我的设计不错和干燥。
我正在使用.net来针对我的XML运行XSL文件。麻烦的是,当我对子XSL文件进行更改并重新运行我的转换(即刷新浏览器)时,更改未显示,直到我触摸或搔痒父文件才会发生。
我认为.net正在缓存XSL文件,但是因为子文件永远不会直接调用它不直接缓存,所以只有在重新缓存父文件时它才会被刷新。听起来合理吗?麻烦的是我无法找到任何可以支持这种预感的东西。
有谁知道我是对的,更重要的是有没有人知道如何防止它发生在我的开发机器上,至少可以加快我的代码/刷新周期?
编辑:我也在使用XSL 1和.net 1。
答案 0 :(得分:1)
我最终在.net中创建了一个小帮助程序,简单地在我的模板文件夹上使用了filewatcher,当保存.xsl文件时,它会快速执行所有其他模板以查找包含的内容保存的文件。如果是这样,那么这些文件的修改日期会“搔痒”,这会强制刷新.net的缓存。
这非常有效并且非常好且无缝。 SVN没有注意到被剔除的文件被修改,这是一个额外奖励,因为它停止了大量的检查。我希望整理代码并在新的一年里发布它。
留意这个空间:)
答案 1 :(得分:0)
当您<xsl:include/>
或<xsl:import/>
其他XSLT文件时,iclude或import的结果将被缓存,直到重新加载父样式表为止。父样式表和子样式表之间没有耦合,允许子样式表通知父项已更新并需要重新导入。
出于开发目的,处理此问题的最快方法是重新启动加载应用程序的AppDomain。对于Windows应用程序,这意味着重新启动应用程序本身 - 对于ASP.NET,这意味着重新启动托管您网站的AppPool