Introduction
The last time, a few years ago, I had to develop a .NET solution with a large set of sequences comparisons between them. This sequence was a big sequence and occasionally, it was a living hell to check these results.
I decided to build an assembly support for visualizing and filtering the collection results in debug mode. Sometime later, I updated this assembly to a Visual Studio Visualizer, and today I share it with you, because I think it is a very useful complement.
MLCollectionVisualizers
is an open source project and the code is available in Github.
Installation
Installing MLCollectionVisualizers
is very simple. We need to distinguish between Visual Studio 2015 and Visual Studio 2017.
Visual Studio 2015
We must copy the MLCollectionVisualizer2015.dll in this path:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers\
Visual Studio 2017
We must copy the MLCollectionVisualizer2017.dll in this path:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Packages\Debugger\Visualizers\
Once an assembly has been put in Visual Studio Visualizer path, reboot Visual Studio and our Collection Visualizer will be installed.
MLCollectionVisualizers
MLCollectionVisualizers
is very simple to use. We have to mark our class type with SERIALIZABLE
. If someone reports any discomfort, we can use the preprocessor directives like in our example:
#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; }
}
Using it is very easy. We put a breakpoint in a collection variable and we do click in the lens:
As we can see, we can ordered data clicking in ColumHeader
of grid.
Filtering
MLCollectionVisualizer
provides filtering data, this filtering is restricted to the DataColumn.Expression
property. Similar to SQL.
We will go the second tab ‘Filters’:
‘Filter Info’ LinkedLabel
- Contains a link with filtered information, all instructions and restrictions.
Apply Filter Button - Executed the filter
Example:
In moving:
If you type an incorrect syntax filter, it will show the error:
In this example, the error is ‘=
’ symbol.
Collections Supported
The collections supported for MLCollectionsVisualizers
are the following:
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
Limitations
Not supported x64 Process.
Not supported System.Data.Entities.DynamicProxies
of Entity Framework. Entity Framework when we query the database, generic for default this objects with special characteristics:
We can fix up this problem, setup our Entity Framework configuration DbContext
to ProxyCreationEnabled
to false
:
context.Configuration.ProxyCreationEnabled = false;
Test Project
Add a test project for this solution and the MLCollectionVisualizers2015.dll and MLCollectionVisualizers2017.dll.
History
- 11th April, 2011: Initial version