繁体   English   中英

使用宏在VS中获取函数

[英]Get functions in VS using macros

如何使用VS宏在Visual Studio中获取代码文件中的所有功能? 我正在使用Visual Studio 2008。

我还需要获取功能是私有保护的还是公共的。 现在,我知道我可以自己解析代码并对其进行检查,但是我想以一种适当的方式进行编码,并认为vs宏环境应允许了解有关函数的所有信息。

请参阅HOWTO:从Visual Studio .NET宏或加载项 导航文件 的代码元素也许如何: 从Visual Studio .NET宏或加载项 导航解决方案的文件对您来说很有趣。

获取功能可访问性很容易。 在第一篇文章之后,您将拥有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宏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM