在.NET开发中,经常需要对大量的序列进行比较。这些序列可能是庞大的,并且检查比较结果有时会变成一场噩梦。为了解决这个问题,决定开发一个支持在调试模式下可视化和过滤集合结果的程序集。随着时间的推移,将这个程序集更新为Visual Studio的可视化工具,今天将与大家分享,因为认为它是一个非常有用的补充。
MLCollectionVisualizers是一个开源项目,代码可以在GitHub上找到。
安装MLCollectionVisualizers非常简单。需要区分Visual Studio 2015和Visual Studio 2017。
需要将MLCollectionVisualizer2015.dll复制到以下路径:
C:\Program Files (x86)\MicrosoftVisual Studio14.0\Common7\Packages\Debugger\Visualizers\
需要将MLCollectionVisualizer2017.dll复制到以下路径:
C:\Program Files (x86)\MicrosoftVisual Studio\2017\Enterprise\Common7\Packages\Debugger\Visualizers\
一旦程序集被放入Visual StudioVisualizer路径,重启Visual Studio,集合可视化工具就会被安装。
MLCollectionVisualizers的使用非常简单。需要将类类型标记为SERIALIZABLE。如果有人报告任何不适,可以使用预处理器指令,如下例所示:
#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; }
}
使用它非常简单。在集合变量上设置一个断点,然后点击放大镜:
正如所看到的,可以通过点击网格的列标题来排序数据。
MLCollectionVisualizer提供了过滤数据的功能,这种过滤仅限于DataColumn.Expression属性。类似于SQL。将转到第二个标签“Filters”:
‘Filter Info’ LinkedLabel - 包含带有过滤信息的链接,所有指令和限制。
应用过滤按钮 - 执行过滤
例如:
在移动中:
如果输入了错误的语法过滤,它会显示错误:
在这个例子中,错误是‘=’符号。
MLCollectionsVisualizers支持的集合如下:
不支持x64进程。
不支持System.Data.Entities.DynamicProxies的Entity Framework。Entity Framework在查询数据库时,默认为这些对象使用泛型,具有特殊特性:
可以修复这个问题,设置Entity Framework配置DbContext,将ProxyCreationEnabled设置为false:
context.Configuration.ProxyCreationEnabled = false;
为这个解决方案添加一个测试项目,以及MLCollectionVisualizer2015.dll和MLCollectionVisualizer2017.dll。