Почему EnvDTE.ProjectItem.FileCodeModel = Ничего? - PullRequest
1 голос
/ 25 августа 2010

Я написал VSMacro (в VS2010), который анализирует решение и добавляет операторы try и catch в файлы cpp.До сих пор все работало нормально.Мне пришлось переформатировать мой компьютер и переустановить 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 голосов
/ 22 июля 2011

Обычно это происходит, когда проект не компилируется.Вы должны сначала попытаться построить решение.

0 голосов
/ 25 августа 2010

В Visual Studio существует несколько сценариев, в которых ProjectItem не возвращает объект FileCodeModel.Например, если ProjectItem указывает на папку или элемент без кода в обозревателе решений.

Можете ли вы проверить, что ProjectItem представляет в этом сценарии.В частности

  • Указывает ли он на файл?
  • В каком типе проекта это (веб, консольное приложение и т. Д.)?
...