在VB.NET(或C#)中,如何以編程方式確定類helper.vb中的公共變量是否在項目中的任何位置使用?如何通過編程檢查變量是否在項目中使用?
7
A
回答
2
從MSDN
Find對象允許您搜索並支持這樣的操作,如代碼編輯器環境的地方替換文本。
它主要用於宏記錄目的。編輯器的宏記錄機制使用Find而不是TextSelection.FindPattern,以便您可以發現全局查找功能,並且因爲它通常比使用TextSelection對象執行Find-in-files等操作更有用。
如果搜索操作是異步的,比如所有的查找,然後在操作完成時發生FindDone事件。
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
0
你需要使用反射,這將是複雜的。
你爲什麼要這樣編程?你知道Visual Studio有一個「查找所有引用」功能,可以爲你做到這一點。
3
找到所有的引用是你的朋友。
0
反射器具有分析功能。或者,這是你之後的某種運行時功能嗎?
0
你說的是在編譯代碼之前這樣做嗎?對編譯好的程序集執行此操作可能不是微不足道的,儘管像Mono.Cecil這樣的工具可以提供幫助。您將不得不實際走過每個方法,並檢查IL指令以調用相關屬性的get和set方法。它可能並不是那麼糟糕,特別是如果你使用Cecil而不是System.Reflection。塞西爾也快得多,因爲它將程序集視爲文件,而不是將它們加載到應用程序域中。
如果你想在項目的實際源代碼上運行它,事情會有很大的不同。我對Visual Studio外接程序瞭解不多,但可以通過編程方式調用「查找所有引用」命令並使用結果。
在System.CodeDom中可能還有些東西可以提供幫助。看起來您可以使用CodeParser
將代碼解析爲CodeCompileUnit
,然後從那裏遍歷所有方法中的所有語句,並檢查相關的CodePropertyReferenceExpression
。
相關問題
- 1. 如何檢查是否有任何變量通過URL傳遞?
- 2. 如何在UNIX中檢查變量是否爲編號
- 3. 如何檢查目標變量是否在數組中?
- 4. 如何檢查變量是否在python
- 5. 如何檢查變量是否在內存中使用javascript
- 6. 檢查package.json中的npm包是否在項目中使用的編程方式?
- 7. Python:檢查項目是否存在可變數量的列表
- 8. 使用lodash模板,我如何檢查變量是否存在?
- 9. 如何通過PHP檢查目錄是否存在?
- 10. 如何檢查變量是否爲CFString?
- 11. 如何檢查變量是否定義?
- 12. 如何檢查變量是否爲空?
- 13. 如何使用powershell命令檢查變量目錄是否存在?
- 14. XSL:通過檢查變量
- 15. JavaScript:如何檢查變量是否存在變量名?
- 16. 檢查變量是否在列表中
- 17. 在html中,如何使變量,如何檢查變量中是否存在某個變量
- 18. 如何以編程方式檢查變量是否正在接近x?
- 19. 如何檢查應用程序是否通過SBT運行?
- 20. 如何檢查是否通過ssh遠程調用python腳本
- 21. 檢查是否需要變量已通過
- 22. 通過變量來檢查它是否不包含字符串
- 23. 如何檢查listView項是否包含FileInfo變量?
- 24. PHP - 如何檢查變量是否匹配數據庫條目?
- 25. 如何使用msbuild檢查項目列表中是否存在任何文件?
- 26. 如何正確檢查ng中的條件是否使用操作員檢查Angular2中的項目數量
- 27. 如何檢查應用程序/項目中是否存在特定的UIViewController
- 28. 如何在OBJECT_ID中使用T-SQL變量來檢查表是否存在?
- 29. 在zend中,如何通過ID檢查會話是否存在?
- 30. 巴什 - 檢查是否變量是任何的許多選項
單向非程序化:註釋掉變量並嘗試編譯:-) – torial 2008-09-26 04:37:08