VS2010 FileCodeModel.CodeElements在VB项目中抛出COMException但不抛出C#项目

时间:2012-02-04 00:06:50

标签: visual-studio visual-studio-2010 vs-extensibility

在一个VS2010软件包中,当插入符号位置发生变化时,我有一段调用FileCodeModel.CodeElements的代码。我还在绑定到文档的CodeModelEvents中注册了一个处理程序。

当程序包监视C#项目时,它可以正常工作。但是,在监视VB项目时,FileCodeModel.CodeElements调用失败,并出现与E_FAIL错误对应的COMException。

为什么行为不同的任何想法?

1 个答案:

答案 0 :(得分:2)

C#和VB.net代码模型是完全独立的实现,两者都有相关的怪癖。

在VB.Net中,插入符号位置更改是可以触发IDE中的行提交逻辑的更大事件集的一部分。我对这个特殊事件的投入并不感到惊讶,特别是如果缓冲区很脏的话。

可能解决此问题的一种方法是在插入符号移动之后等待util空闲事件并在那里查询CodeElements