65.9K
CodeProject 正在变化。 阅读更多。
Home

Visual Studio 集合可视化工具

2017年4月11日

CPOL

2分钟阅读

viewsIcon

41816

downloadIcon

1160

Visual Studio 2015 和 Visual Studio 2017 的集合可视化工具。 在调试模式下预览您的集合。

引言

上一次,几年前,我不得不开发一个 .NET 解决方案,其中包含大量序列之间的比较。这个序列是一个很大的序列,偶尔,检查这些结果简直是炼狱。

我决定构建一个程序集来支持在调试模式下可视化和过滤集合结果。 后来,我将这个 程序集 更新为 Visual Studio 可视化工具,今天我将它分享给你,因为我认为它是一个非常有用的补充。

MLCollectionVisualizers 是一个开源项目,代码可在 Github 上获取。

安装

安装 MLCollectionVisualizers 非常简单。 我们需要区分 Visual Studio 2015Visual Studio 2017

Visual Studio 2015

我们必须将 MLCollectionVisualizer2015.dll 复制到此路径

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers\

Visual Studio 2017

我们必须将 MLCollectionVisualizer2017.dll 复制到此路径

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Packages\Debugger\Visualizers\

一旦将程序集放入 Visual Studio 可视化工具路径中,重新启动 Visual Studio,我们的集合可视化工具将被安装。

MLCollectionVisualizers

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; }
}

使用它非常简单。 我们在一个集合变量中放置一个 断点,然后单击镜头

正如我们所看到的,我们可以通过单击网格的 ColumHeader 来排序数据。

过滤

MLCollectionVisualizer 提供数据过滤,此过滤仅限于 DataColumn.Expression 属性。 类似于 SQL

我们将进入第二个选项卡 'Filters'

Filter InfoLinkedLabel - 包含带有过滤信息的链接,所有说明和限制。

应用过滤器按钮 - 执行过滤器

示例

正在进行中

如果您输入了不正确的语法过滤器,它将显示错误

在此示例中,错误是“=”符号。

支持的集合

MLCollectionsVisualizers 支持的集合如下

  • 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
  • 队列
  • 堆栈

限制

不支持 x64 进程。

不支持 Entity Framework 的 System.Data.Entities.DynamicProxies。 当我们查询数据库时,Entity Framework 默认使用具有特殊特征的通用对象

我们可以通过将我们的 Entity Framework 配置 DbContext 设置为 ProxyCreationEnabled 设为 false 来修复这个问题

context.Configuration.ProxyCreationEnabled = false;

测试项目

为此解决方案添加一个测试项目以及 MLCollectionVisualizers2015.dllMLCollectionVisualizers2017.dll

历史

  • 2011 年 4 月 11 日:初始版本
© . All rights reserved.