2010-08-25 55 views
1

我写了一个VSMacro(在VS2010中)解析解决方案,并将try和catch语句添加到cpp文件。到现在为止,它一直工作得很好。我不得不重新格式化我的电脑,重新安装VS2010,现在它崩溃了。这是宏的一个片段。为什么EnvDTE.ProjectItem.FileCodeModel = Nothing?

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

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

回答

0

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

您可以验证ProjectItem在这种情况下代表什么。特别是

  • 它指向一个文件吗?
  • 这是什么类型的项目(Web,控制台应用程序等)?
+0

就像我在我的问题中所说的,'ProjectItem'指向一个cpp文件。 – 2010-08-25 15:19:28

+0

@ Ernesto,这是什么类型的C++项目。本机,纯粹托管,C++/CLI等... – JaredPar 2010-08-25 15:25:45

0

通常情况下,它发生在项目不可编译时。您需要先尝试构建解决方案。

相关问题