En VB.NET (o C#) ¿cómo puedo determinar programáticamente si una variable pública en la clase helper.vb se usa en cualquier lugar dentro de un proyecto?¿Cómo se comprueba si una variable se usa programáticamente en un proyecto?
Respuesta
De MSDN
El objeto Buscar le permite buscar y reemplazar texto en lugares del entorno que soporte este tipo de operaciones, como el editor de código.
Está destinado principalmente a la macro grabación. El mecanismo de macrocomprobación del editor usa Find en lugar de TextSelection.FindPattern para que pueda descubrir la funcionalidad de búsqueda global y porque, por lo general, es más útil que usar el objeto TextSelection para operaciones tales como Find-in-files.
Si la operación de búsqueda es asincrónica, como Buscar todo, el evento FindDone se produce cuando la operación finaliza.
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
Tendrías que usar el reflejo y sería complicado.
¿Por qué lo hace programáticamente? Usted sabe que Visual Studio tiene una función "Buscar todas las referencias" que puede hacer esto por usted.
Encuentra todas las referencias es tu amigo.
Reflector tiene la función Analizar. ¿O es esto algún tipo de funcionalidad de tiempo de ejecución que buscas?
¿Estás hablando de hacer esto antes de compilar el código? Hacer esto contra un ensamblado compilado probablemente no sería trivial, aunque herramientas como Mono.Cecil podrían ayudar. En realidad, tendría que caminar cada método e inspeccionar las instrucciones de IL para las llamadas a los métodos de obtención y establecimiento de la propiedad en cuestión. Sin embargo, puede que en realidad no sea tan malo, especialmente si usaste Cecil en lugar de System.Reflection. Cecil también es mucho más rápido, ya que trata los ensamblajes como archivos en lugar de cargarlos en el dominio de la aplicación.
Si quiere ejecutar esto en el código fuente real de un proyecto, las cosas son muy diferentes. No sé mucho sobre complementos de Visual Studio, pero es posible que pueda invocar el comando "Buscar todas las referencias" mediante programación y usar los resultados.
También podría haber algo en System.CodeDom que podría ayudar. Parece que podría usar un CodeParser
para analizar el código en un CodeCompileUnit
y, a partir de ahí, recorrer todas las declaraciones en todos los métodos y comprobar si hay CodePropertyReferenceExpression
s relacionadas.
- 1. Si se comprueba nulo
- 2. ¿Comprueba si se toca UIView?
- 3. ¿Cómo se usa programáticamente JdbcTemplate de Spring?
- 4. ¿Cómo calculo una variable en JavaScript si y solo si se usa?
- 5. ¿Cómo comprueba git si se necesita una fusión?
- 6. Comprueba si se pasan variables en un GET
- 7. C# - comprobando si se inicializa una variable
- 8. Comprueba si una variable es nula en plsql
- 9. Comprueba si se superponen dos veces
- 10. ¿Cómo se usa una variable en xsl cuando se intenta seleccionar un nodo?
- 11. C macro: # si se comprueba la igualdad
- 12. Comprueba si se está ejecutando un archivo exe específico
- 13. Comprueba si la variable comienza con 'http'
- 14. comprueba si una variable es de tipo objeto mysqli?
- 15. Verificando si se define una variable?
- 16. cómo se comprueba si UIWebView está vacío o no
- 17. Cómo saber si se usa glibc
- 18. Comprueba si la variable es una fecha válida con PHP
- 19. Averiguar si se usa el recurso
- 20. ¿Cómo se comprueba si se está reproduciendo música utilizando un receptor de difusión?
- 21. ¿Cómo se comprueba si existe un documento incrustado en un documento en mongoid?
- 22. cómo saber si se usa un índice alguna vez
- 23. ¿Se usa '@' en C++?
- 24. ¿Cómo se usa la variable setEnv en apache?
- 25. ¿Cómo se usa una biblioteca de Java?
- 26. Creando programáticamente un proyecto
- 27. Comprueba si se ha configurado el fragmento JSP
- 28. ¿Cómo se comprueba si existe un objeto en el motor de plantillas Twig en Symfony2?
- 29. Determine si se usa una celda (valor) en cualquier fórmula
- 30. Verifica programáticamente si se está ejecutando syncdb
Una forma que no es programática: Comenta la variable y prueba una compilación :-) – torial