我在一个自定义的项目系统上工作,我在重命名项目时遇到了问题。该项目系统的实现是基于强积金和通过解决方案资源管理器重命名项目或多或少没有任何问题,但.
当项目被重命名时,我还更新存储在文件本身中的信息。如果代码编辑器打开文档,编辑器中的文本不会刷新(只有文档窗口的标题更改为新的文件名)。当然,如果我保存打开的文档,由重命名操作应用的所有更改都会被覆盖。
如何强制编辑器重新加载文档,以便显示自动更改?
发布于 2014-05-27 01:19:21
假设它是一个文本文件,而不是某个自定义设计器,那么使用IVsRunningDocumentTable接口来获取当前打开的文件的文本缓冲区。接口的第四次迭代是最容易从托管代码中使用的。您可以调用IsMonikerValid (其中"moniker“是文件名)来查看文件是否打开,如果打开,则调用GetDocumentData来获取文件的IVsTextBuffer。使用该类型本身相当烦人,所以如果您只支持Visual 2010或更高版本,那么将其传递给这一功能以获得更新的编辑器API版本。
就他们“为什么”而言,这样做是个好主意:如果您在磁盘上编辑文件,然后尝试强制重新加载,您可能会遇到各种各样的问题。如果在重命名之前没有保存文件,您可能会意外地丢失那些未保存的编辑。重新加载可能会导致文件的撤消历史记录丢失,任何其他带有编辑器跟踪范围或标记的扩展名/特性都可能丢失它们正在跟踪的点。如果文件是一个大文件,那么性能也应该更好一些。
https://stackoverflow.com/questions/23826485
复制相似问题