Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 使用宏获取VS中的函数_Visual Studio_Macros - Fatal编程技术网

Visual studio 使用宏获取VS中的函数

Visual studio 使用宏获取VS中的函数,visual-studio,macros,Visual Studio,Macros,如何使用VS宏在Visual Studio中获取代码文件中的所有函数? 我正在使用VisualStudio2008 我还需要知道函数是私有保护的还是公共的。现在我知道我可以自己解析代码并检查它,但我想用一种合适的方式来编写它,并且认为vs宏环境应该允许了解有关函数的所有信息。请参见 A也许你会感兴趣 获取函数可访问性很容易。在第一篇文章之后,您将看到CodeElement对象。如果它是CodeFunction类型,则可以将其强制转换为CodeFunction(或也可以转换为CodeFunctio

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

我还需要知道函数是私有保护的还是公共的。现在我知道我可以自己解析代码并检查它,但我想用一种合适的方式来编写它,并且认为vs宏环境应该允许了解有关函数的所有信息。

请参见 A也许你会感兴趣

获取函数可访问性很容易。在第一篇文章之后,您将看到CodeElement对象。如果它是CodeFunction类型,则可以将其强制转换为CodeFunction(或也可以转换为CodeFunction2)类型。CodeFunction包含许多属性,包括您需要的访问权限。我修改了本文中的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宏。

谢谢分享,我已经更新了问题M,请看一看。