如何使用VS宏获取Visual Studio代码文件中的所有函数? 我真的使用Visual Studio 2008使用宏在VS中获取函数
而且我需要的功能是保护私有或公共。现在我知道我可以解析代码并单独检查它,但我想以适当的方式进行验证,并且认为vs宏环境应该允许了解关于函数的所有信息。
如何使用VS宏获取Visual Studio代码文件中的所有函数? 我真的使用Visual Studio 2008使用宏在VS中获取函数
而且我需要的功能是保护私有或公共。现在我知道我可以解析代码并单独检查它,但我想以适当的方式进行验证,并且认为vs宏环境应该允许了解关于函数的所有信息。
请参阅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然后宏。
感谢分享,我已经更新了问题请看看。 – 2010-01-07 14:25:29
我已经更新了答案 – 2010-01-08 09:35:25