2010-01-07 2 views
2

Comment obtenir toutes les fonctions que vous avez dans un fichier de code dans Visual Studio en utilisant des macros VS? J'utilise Visual Studio 2008.Obtenir des fonctions dans VS en utilisant des macros

Aussi, j'ai besoin d'obtenir si la fonction est privée protégée ou publique. Pour l'instant, je sais que je peux juste analyser le code et le vérifier moi-même, mais je veux le faire correctement et penser à l'environnement des macros devrait permettre de connaître toutes les informations sur les fonctions.

Répondre

1

Voir HOWTO: Navigate the code elements of a file from a Visual Studio .NET macro or add-in Un HOWTO: Navigate the files of a solution from a Visual Studio .NET macro or add-in serait peut-être intéressant pour vous.

Obtenir l'accessibilité des fonctions est facile. Après le premier article, vous avez l'objet CodeElement. S'il est de type CodeFunction, vous pouvez le convertir en codeFunction (ou aussi en CodeFunction2). La fonction CodeFunction contient de nombreuses propriétés, y compris Access, ce dont vous avez besoin. Je l'ai modifié ShowCodeElement de cet article il montre que les fonctions et affiche également leur accessibilité:

Private Sub ShowCodeElement(ByVal objCodeElement As CodeElement) 

    Dim objCodeNamespace As EnvDTE.CodeNamespace 
    Dim objCodeType As EnvDTE.CodeType 
    Dim objCodeFunction As EnvDTE.CodeFunction 

    If TypeOf objCodeElement Is EnvDTE.CodeNamespace Then 

     objCodeNamespace = CType(objCodeElement, EnvDTE.CodeNamespace) 
     ShowCodeElements(objCodeNamespace.Members) 

    ElseIf TypeOf objCodeElement Is EnvDTE.CodeType Then 

     objCodeType = CType(objCodeElement, EnvDTE.CodeType) 
     ShowCodeElements(objCodeType.Members) 

    ElseIf TypeOf objCodeElement Is EnvDTE.CodeFunction Then 

     Try 
      Dim msg As String = objCodeElement.FullName & vbCrLf 
      Dim cd As EnvDTE.CodeFunction = DirectCast(objCodeElement, CodeFunction) 
      Select Case cd.Access 
       Case vsCMAccess.vsCMAccessDefault 
        msg &= "Not explicitly specified. It is Public in VB and private in C#." 
       Case Else 
        msg &= cd.Access.ToString 
      End Select 
      MsgBox(msg) 
     Catch ex As System.Exception 
      ' Ignore 
     End Try 
    End If 

End Sub 

changer et exécuter ShowFileCodeModel macro alors.

+0

Merci pour le partage, j'ai mis à jour la question s'il vous plaît, jetez un oeil. –

+0

J'ai mis à jour la réponse –

Questions connexes