为什么EnvDTE.ProjectItem.FileCodeModel = Nothing?

时间:2010-08-25 15:08:29

标签: vb.net visual-studio vba visual-studio-macros

我编写了一个VSMacro(在VS2010中),它解析了一个解决方案,并为cpp文件添加了try和catch语句。到目前为止,它一直很好。我不得不重新格式化我的电脑并重新安装VS2010,现在它崩溃了。这是宏的一个片段。

Sub Foo(ByVal file As EnvDTE.ProjectItem)
    Dim fileCM As EnvDTE.FileCodeModel
    fileCM = file.FileCodeModel
End Sub

我已经检查过该文件是否是一个有效的对象,它确实指向一个cpp文件。但由于某种原因,file.FileCodeModel = Nothing。为什么FileCodeModel是Nothing?

2 个答案:

答案 0 :(得分:0)

在Visual Studio中有几种情况,ProjectItem不会返回FileCodeModel个对象。例如,如果ProjectItem指向解决方案资源管理器中的文件夹或非代码文件项。

您可以验证此方案中ProjectItem代表的内容吗?特别是

  • 是否指向文件?
  • 这是什么类型的项目(Web,控制台应用等)?

答案 1 :(得分:0)

通常,当项目不可编译时会发生。您需要先尝试构建解决方案。