10

我在Visual Studio 2010中进行了调试,我们刚刚安装并试图在快速监视窗口中查看字典。我看到钥匙和价值观,但钻进这些展示了伯爵和非公众成员,非公众成员继续追踪,我从来没有看到字典中的值。我可以运行test.Take(10)并查看值,但为什么我必须这样做。我没有再安装VS 2008来进行比较,但似乎我可以更容易地调试字典。为什么现在这样呢?这只是我在机器上设置的设置吗?为什么字典调试可视化器在Visual Studio 2010中用于Silverlight调试的用处不大?

测试代码:

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

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

Console Debug Screen Shot

Silverlight 4 Debug Screen Shot

编辑:回复来自微软连接: “这是我方的疏忽 - 我们之前已经固定为Visual Studio 2008 SP1这个确切问题,但这个修复不幸没有移植到Visual Studio 2010代码库,现在再次修复(这次是好的!),我们正在考虑在VS2010 SP1中发布此修复程序。和C#编译器“所以它应该尽快解决。

编辑:我刚刚在SP1中检查了这一点,它工作正常。

+2

我已经接受汉斯帕桑特的回答并提交错误报告给微软。我们将看到会发生什么:http://connect.microsoft。COM/VisualStudio的/反馈/信息/ 557741/Silverlight的4-字典的调试。 – Aligned 2010-05-10 15:57:35

+0

是的,我有同样的问题,它吹。微软证实了其在2010年的一个错误(*不*测试版),并可能在SP1中修复。 – 2010-07-09 18:13:32

回答

0

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

你的代码片断表明你正在使用一个完全不同的Dictionary类,一个不是通用的。

+0

我刚刚编辑了我的问题......我的格式不正确,它隐藏了定义的泛型。 – Aligned 2010-05-07 18:33:19

+0

好吧,那就行了。你的代码片段是否真的重现了这个问题? – 2010-05-07 18:35:16

+0

请参阅我的更新的编辑,它对于Silverlight应用程序与控制台应用程序似乎不同。 – Aligned 2010-05-07 19:09:40

4

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

  1. 到项目中,添加到LINQ DLL的引用(例如System.Core程序)

  2. 添加以下语句源文件:使用System.Linq的

    ;

  3. 在钟表窗口中键入:

    test.Take(1)

  4. 然后展开 “结果视图” 组行。这应该给你熟悉的键值对的列表。

[此解决办法是报告的rickpastoor上connect.microsoft.com的错误557741]

相关问题