在一个VS2010软件包中,当插入符号位置发生变化时,我有一段调用FileCodeModel.CodeElements的代码。我还在绑定到文档的CodeModelEvents中注册了一个处理程序。
当程序包监视C#项目时,它可以正常工作。但是,在监视VB项目时,FileCodeModel.CodeElements调用失败,并出现与E_FAIL错误对应的COMException。
为什么行为不同的任何想法?
答案 0 :(得分:2)
C#和VB.net代码模型是完全独立的实现,两者都有相关的怪癖。
在VB.Net中,插入符号位置更改是可以触发IDE中的行提交逻辑的更大事件集的一部分。我对这个特殊事件的投入并不感到惊讶,特别是如果缓冲区很脏的话。
可能解决此问题的一种方法是在插入符号移动之后等待util空闲事件并在那里查询CodeElements
。