Hace tiempo, varios años atrás, estuve desarrollando un
programa en .NET, la cual contenía una gran cantidad de comparaciones
entre secuencias. El tamaño de estas colecciones eran bastante grandes y el
debugeo y la comprobación de los resultados se convertía en un infierno el
navegar entre los treeviews de resultados.
Decidí construir una dll
que me permitiera poder visualizar las secuencias y los filtrados y las
comparaciones entre ellos. Un tiempo después lo actualicé a un visualizer, simplificaba bastante el
trabajo. Ya que el resultado fue bastante satisfactorio, hoy lo comparto con
todos vosotros.
Instalación
La instalación MLCollectionVisualizers es muy simple, aunque tendremos que distinguir entre Visual Studio 2015 and Visual Studio 2017.
VISUAL STUDIO 2015:
Debemos copiar el ensamblado MLCollectionVisualizer2015.dll en esta ruta:
C:\Program
Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers\
VISUAL STUDIO 2017:
Debemos copiar el ensamblado MLCollectionVisualizer2017.dll en esta ruta:
C:\Program
Files (x86)\Microsoft Visual
Studio\2017\Enterprise\Common7\Packages\Debugger\Visualizers\
Una vez el ensamblado ha sido copiado en la ruta de visualizer de la versión de Visual Studio correspondiente, reiniciaremos Visual Studio y ya estará instalado.
MLCollectionVisualizers
MLCollectionVisualizers
es muy simple de usar. Será necesario marcar la clase como SERIALIZABLE. Si alguien no se siente conforme con esto,
podemos utilizar directivas de preprocesador como vemos en este ejemplo:
#if DEBUG [Serializable] #endif public class Album { public int ID { get; set; } public string Artist { get; set; } public string AlbumName { get; set; } public int Released { get; set; } public string Genre { get; set; } public decimal NumberOfCopies { get; set; } public int ClaimedSales { get; set; } }
Emplearlo es muy fácil. Pondremos un breakpoint en una variable que guarda datos de una colección, y
haremos click en la lupa.
Como se puede apreciar podemos ordenar los datos pinchando
en la cabecera del grid.
Filtrado
MLCollectionVisualizer proporciona filtrado de datos, este filtrado está restringido a técnica de filtrado de la propiedad DataColumn.Expression , muy similar a SQL.
Dos desplazaremos hasta la segunda pestaña ‘Filters’:
Etiqueta de Link ‘Filter Info’.- Contiene un link a la página de Microsoft con información sobre la forma de filtrado.
Botón ‘Apply Filter’.- Ejecuta el filtrado.
Ejemplo:
En movimiento:
Si escribimos un filtro con la sintaxis incorrecta aparecerá
este mensaje de error:
En este ejemplo sobraría el símbolo ‘=’.
Colecciones Soportadas
MLCollectionsVisualizers soporta los siguientes tipos de colecciones:
- IEnumerable<T>
- ICollection<T>
- IList<T>
- HashSet<T>
- ObservableCollection<T>
- Queue<T>
- Stack<T>
- LinkedList<T>
- IReadOnlyCollection<T>
- ConcurrentBag<T>
- ConcurrentQueue<T>
- ConcurrentStack<T>
- Array ( T[] )
- IEnumerable
- ArrayList
- HashSet
- Queue
- Stack
Limitaciones
No soporta procesos x64.
No soporta System.Data.Entities.DynamicProxies de
Entity Framework. Cuando
consultamos datos de un contexto de Entity
Framework, este genera por defecto este tipo de proxies dinámicos a partir del tipo de la entidad:
Podemos arreglar esta carencia, configurando la propiedad ProxyCreationEnabled de nuestro DbContext a false:
context.Configuration.ProxyCreationEnabled = false;
Proyecto de Tests
He añadido un proyecto de tests, para poder ver el
visualizer en acción. También he añadido para descargar las librerías
necesarias según la versión de Visual Studio. Estas librerías tendrás que estar
instaladas antes de ejecutar el proyecto.
Dlls
https://drive.google.com/open?id=0B2hueHRCv0E7bmM4ZWJPVnhaOFU
Projecto de Tests
https://drive.google.com/open?id=0B2hueHRCv0E7V1pRWFZPWm1fSFE
No hay comentarios :
Publicar un comentario