프로젝트에서 프로그래밍 방식으로 변수가 사용되는지 어떻게 확인합니까?

StackOverflow https://stackoverflow.com/questions/136829

문제

VB.NET (또는 C#)에서 클래스 헬퍼의 공개 변수가 프로젝트 내 어느 곳에서나 사용되는 경우 프로그래밍 방식으로 어떻게 결정할 수 있습니까?

도움이 되었습니까?

해결책

에서 MSDN

Find Object를 사용하면 코드 편집기와 같은 작업을 지원하는 환경의 장소에서 텍스트를 검색하고 교체 할 수 있습니다.

주로 매크로 녹음 목적을위한 것입니다. 편집자의 매크로 기록 메커니즘은 글로벌 찾기 기능을 발견 할 수 있도록 TextSelection.FindPattern이 아닌 Find Find를 사용하며 일반적으로 Find-In-Files와 같은 작업에 텍스트 선택 객체를 사용하는 것보다 더 유용하기 때문입니다.

검색 작업이 모든 것을 찾는 것과 같이 비동기식이라면 찾아 낸다 작업이 완료되면 이벤트가 발생합니다.

Sub ActionExample()
   Dim objFind As Find = objTextDoc.DTE.Find

   ' Set the find options.
   objFind.Action = vsFindAction.vsFindActionFindAll
   objFind.Backwards = False
   objFind.FilesOfType = "*.vb"
   objFind.FindWhat = "<Variable>"
   objFind.KeepModifiedDocumentsOpen = False
   objFind.MatchCase = True
   objFind.MatchInHiddenText = True
   objFind.MatchWholeWord = True
   objFind.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral
   objFind.ResultsLocation = vsFindResultsLocation.vsFindResultsNone
   objFind.SearchPath = "c:\<Your>\<Project>\<Path>"
   objFind.SearchSubfolders = False
   objFind.Target = vsFindTarget.vsFindTargetCurrentDocument
   ' Perform the Find operation.
   objFind.Execute()
End Sub



<System.ContextStaticAttribute()> _
Public WithEvents FindEvents As EnvDTE.FindEvents

Public Sub FindEvents_FindDone(ByVal Result As EnvDTE.vsFindResult, _
                               ByVal Cancelled As Boolean) _
                               Handles FindEvents.FindDone
   Select Case Result 
        case vsFindResultFound
             'Found!
        case else
             'Not Found
   Ens select
End Sub

다른 팁

모든 참조는 친구입니다.

반사를 사용해야하며 복잡합니다.

왜이 프로그램을 수행하고 있습니까? Visual Studio에는이를 수행 할 수있는 "모든 참조 찾기"기능이 있다는 것을 알고 있습니다.

반사판에는 분석 기능이 있습니다. 아니면, 이것은 당신이 후에 어떤 종류의 실행 시간 기능입니까?

코드가 컴파일되기 전에이 작업을 수행하는 것에 대해 이야기하고 있습니까? 컴파일 된 어셈블리에 대해이 작업을 수행하면 아마도 도구와 같은 도구는 모노. 세실 도움이 될 수 있습니다. 실제로 각 방법을 걷고 문제의 속성의 GET 및 설정 방법에 대한 통화를 IL 지침을 검사해야합니다. 그래도 System.reflection 대신 Cecil을 사용한 경우에는 실제로 그렇게 나쁘지 않을 수도 있습니다. Cecil은 어셈블리를 실제로 애플리케이션 도메인에로드하는 대신 파일로 취급하므로 훨씬 빠릅니다.

프로젝트의 실제 소스 코드에서 이것을 실행하고 싶다면 많은 것이 다릅니다. Visual Studio Add-Ins에 대해 많이 알지 못하지만 "모든 참조 찾기"명령을 프로그래밍 방식으로 호출하고 결과를 사용할 수 있습니다.

System.codedom에 도움이 될 수있는 것이있을 수도 있습니다. 당신이 사용할 수있는 것 같습니다 CodeParser 코드를 a로 구문 분석합니다 CodeCompileUnit, 그리고 거기에서 모든 방법의 모든 진술을 걸어 다니며 관련을 확인하십시오. CodePropertyReferenceExpression에스.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top