Почему визуализатор отладки словаря менее полезен в 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]