2010-08-25 13 views
1

J'ai écrit un VSMacro (dans VS2010) qui analyse une solution et ajoute des instructions try et catch aux fichiers cpp. Ça a bien fonctionné jusqu'à maintenant. J'ai dû reformater mon PC et réinstaller VS2010 et maintenant il plante. Voici un extrait de la macro.Pourquoi EnvDTE.ProjectItem.FileCodeModel = Nothing?

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

J'ai vérifié pour voir si ce fichier est un objet valide, et il pointe vers un fichier cpp. Mais pour une raison quelconque, file.FileCodeModel = Nothing. Pourquoi FileCodeModel serait-il Nothing?

Répondre

0

Il existe plusieurs scénarios dans Visual Studio où ProjectItem ne retournera pas un objet FileCodeModel. Par exemple si le ProjectItem pointe vers un dossier ou un élément de fichier non-code dans l'explorateur de solution.

Pouvez-vous vérifier ce que le ProjectItem représente dans ce scénario. En particulier

  • Pointant vers un fichier?
  • De quel type de projet s'agit-il (Web, console, etc ...)?
+0

Comme je l'ai dit dans ma question, le 'ProjectItem' pointe vers un fichier cpp. –

+0

@Ernesto, quel type de projet C++ est-ce. Natif, pur géré, C++/CLI, etc ... – JaredPar

0

Habituellement, cela arrive quand le projet n'est pas compilable. Vous devez d'abord essayer de construire la solution.