【问题标题】:Why is the dictionary debug visualizer less useful in Visual Studio 2010 for Silverlight debugging?为什么字典调试可视化工具在 Visual Studio 2010 中用于 Silverlight 调试的用处不大?
【发布时间】:2011-02-16 21:21:06
【问题描述】:

我在刚刚安装的 Visual Studio 2010 中进行调试,并尝试在快速查看窗口中查看字典。我看到了键和值,但深入研究显示了计数和非公共成员,非公共成员继续跟踪,我从未在字典中看到值。我可以运行 test.Take(10) 并查看值,但我为什么要这样做。我不再安装 VS 2008 进行比较,但似乎我可以更轻松地调试字典。为什么现在是这个样子?这只是我在我的机器上以某种方式设置的设置吗?

测试代码:

  Dictionary<string, string> test = new Dictionary<string, string>();
    test.Add("a", "b");

编辑: 我刚刚在控制台应用程序中尝试了相同的调试,它按预期工作。另一个项目是 Silverlight 4 应用程序,它们为什么不同?

Console Debug Screen Shot

Silverlight 4 Debug Screen Shot:

编辑:来自 Microsoft Connect 的回复: “这是我们的疏忽——我们之前已经为 Visual Studio 2008 SP1 修复了这个确切的问题,但不幸的是,这个修复没有移植到 Visual Studio 2010 代码库。现在再次修复(这一次是好的!),我们'正在考虑在 VS2010 SP1 中发布此修复程序。

亚历克斯·特纳 项目经理 Visual Basic 和 C# 编译器”所以应该很快就会修复。

编辑:我刚刚在 SP1 中仔细检查了它,它工作正常。

【问题讨论】:

  • 我已接受 Hans Passant 的回答并向 Microsoft 提交了错误报告。我们会看看会发生什么:connect.microsoft.com/VisualStudio/feedback/details/557741/….
  • 是的,我遇到了同样的问题,而且很糟糕。 Microsoft 确认其在 VS 2010 中存在错误(不是测试版),并且可能会在 SP1 中进行修复。

标签: visual-studio-2010 silverlight-4.0 visual-studio-debugging visualizer


【解决方案1】:

有一种解决方法可以在调试器中转储字典的内容。

  1. 在您的项目中,添加对 linq dll 的引用(例如 System.Core)

  2. 将以下语句添加到您的源文件中:

    使用 System.Linq;

  3. 在监视窗口中,键入:

    test.Take(1)

  4. 然后展开“结果视图”组行。这应该会为您提供熟悉的键值对列表。

[rickpastoor 在 connect.microsoft.com 上针对错误 557741 报告了此解决方法]

【讨论】:

    【解决方案2】:

    Dictionary 的调试器可视化工具是具有完全相同行为的完全相同的类。它仍然是私有的 Mscorlib_DictionaryDebugView 类。未展开显示 Count,展开显示元素数组。

    您的代码 sn-p 表明您使用的是完全不同的 Dictionary 类,它不是通用的。

    【讨论】:

    • 我刚刚编辑了我的问题...我的格式不正确,它隐藏了定义的 泛型。
    • 对,可以。你的 sn-p 真的重现了这个问题吗?
    • 请查看我的更新编辑,Silverlight 应用与控制台应用似乎有所不同。
    • @Kevin,链接被弄乱了。但是我对 Silverlight4 进行了复制,我错过了你问题的那一部分。它仍然具有相同的可视化工具,但在调试器中不起作用。 Silverlight 工具仍处于测试阶段,您可以通过在 connect.microsoft.com 上发布来了解该错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    相关资源
    最近更新 更多