[英]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.