2010-01-07 79 views
2

如何使用VS宏获取Visual Studio代码文件中的所有函数? 我真的使用Visual Studio 2008使用宏在VS中获取函数

而且我需要的功能是保护私有或公共。现在我知道我可以解析代码并单独检查它,但我想以适当的方式进行验证,并且认为vs宏环境应该允许了解关于函数的所有信息。

回答

1

请参阅HOWTO: Navigate the code elements of a file from a Visual Studio .NET macro or add-in 也许HOWTO: Navigate the files of a solution from a Visual Studio .NET macro or add-in将很有趣。

取得功能辅助功能是很容易。在第一篇文章之后,您有CodeElement对象。如果它是CodeFunction类型,则可以将其转换为CodeFunction(或也可以转换为CodeFunction2)类型。 CodeFunction包含许多属性,包括您需要的Access。我从这篇文章修改ShowCodeElement所以它只能显示功能,同时还显示它们的可访问:

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 

改变它,执行ShowFileCodeModel然后宏。

+0

感谢分享,我已经更新了问题请看看。 – 2010-01-07 14:25:29

+0

我已经更新了答案 – 2010-01-08 09:35:25