Почему визуализатор отладки словаря менее полезен в Visual Studio 2010 для отладки Silverlight?

Я отлаживал Visual Studio 2010, который мы только что установили, и попытаемся найти словарь в окне быстрого просмотра. Я вижу "Ключи и ценности", но сверление в них показывает, что члены "Граф" и "Непубличные", Непубличные члены продолжают след, и я никогда не вижу значений в словаре. Я могу запустить test.Take(10) и увидеть значения, но зачем мне это делать. У меня больше нет VS 2008, чтобы сравнивать, но мне кажется, что я могу отлаживать словарь намного проще. Почему так сейчас? Это просто настройка, которую я как-то установил на своей машине?

Тестовый код:

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

EDIT: Я только что попробовал такую ​​же отладку в приложении консоли, и он работает так, как ожидалось. Другой проект - приложение Silverlight 4, почему они отличаются?

Экранный отладочный файл консоли

Silverlight 4 Debug Screen Shot:

EDIT: ответ от Microsoft Connect: "Это было упущение с нашей стороны - мы ранее исправили эту точную проблему для Visual Studio 2008 SP1, но это исправление, к сожалению, не было перенесено в кодовую базу Visual Studio 2010. Это теперь исправлено снова (на этот раз полезно!), И мы" Изучите отправку этого исправления в VS2010 SP1.

Алекс Тернер Менеджер программы Visual Basic и компилятор С# "Так что это должно быть исправлено в ближайшее время.

EDIT: я просто дважды проверил это в SP1, и он работает правильно.

Ответ 1

Отладчик-визуализатор для словаря - это тот же самый класс с таким же поведением. Это по-прежнему частный класс Mscorlib_DictionaryDebugView. Unexpanded показывает, что граф, расширенный, показывает массив элементов.

В вашем фрагменте кода предполагается, что вы используете совершенно другой класс Dictionary, который не является общим.

Ответ 2

Существует обходное решение для сброса содержимого словаря в отладчике.

  • В ваш проект добавьте ссылку на DLL linq (например, System.Core)

  • Добавьте в исходный файл следующую инструкцию:

    используя System.Linq;

  • В окне просмотра введите:

    test.Take(1)

  • Затем разверните группу групп "Результаты". Это должно дать вам знакомый список пар ключей, значений.

[Об этом обходной путь был сообщен rickpastoor на connect.microsoft.com для Bug 557741]