10

Estaba depurando en Visual Studio 2010, que acabamos de instalar e intentando ver un diccionario en la ventana de observación rápida. Veo Claves y valores, pero al explorar esos programas, los miembros Conde y No públicos, los miembros no públicos continúan el camino y nunca veo los valores en el diccionario. Puedo ejecutar la prueba. Tomar (10) y ver los valores, pero ¿por qué debería hacer eso? Ya no tengo VS 2008 instalado para comparar, pero parece que podría depurar un diccionario mucho más fácilmente. ¿Por qué es de esta manera ahora? ¿Es solo una configuración que establecí de alguna manera en mi máquina?¿Por qué el visualizador de depuración del diccionario es menos útil en Visual Studio 2010 para la depuración de Silverlight?

Código de ensayo:

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

EDIT: acabo de trató de la misma depuración en una aplicación de consola y funciona como se esperaba. El otro proyecto es una aplicación Silverlight 4, ¿por qué son diferentes?

Console Debug Screen Shot

Silverlight 4 Debug Screen Shot:

EDIT: Respuesta de Microsoft Connect: "Esta fue una omisión de nuestra parte - que habíamos fijado previamente esta cuestión exacta para Visual Studio 2008 SP1, pero esta corrección, por desgracia, no portado a la base de código de Visual Studio 2010. esto se ha fijado ahora de nuevo (esta vez para siempre!) y estamos buscando en el envío esta revisión en VS2010 SP1.

Alex Turner Director de Programa Visual Basic y compilador de C# "Por lo tanto, debería arreglarse pronto.

EDITAR: He comprobado esto por primera vez en SP1 y está funcionando correctamente.

+2

He aceptado la respuesta de Hans Passant y presentó un informe de error a Microsoft. Veremos qué sucede: http://connect.microsoft.com/VisualStudio/feedback/details/557741/silverlight-4-dictionary-debugging. – Aligned

+0

Sí, estoy teniendo el mismo problema y sopla. Microsoft confirma que es un error en VS 2010 (* no * una versión beta) y puede haber una solución en SP1. –

Respuesta

0

El visualizador de depuración para el diccionario es exactamente la misma clase con exactamente el mismo comportamiento. Sigue siendo la clase privada Mscorlib_DictionaryDebugView. Sin expandir muestra Count, expandido muestra una matriz de elementos.

Su fragmento de código sugiere que está utilizando una clase de diccionario completamente diferente, una que no es genérica.

+0

Acabo de editar mi pregunta ... Tenía el formato incorrecto, que ocultaba genérico de la definición. – Aligned

+0

Correcto, eso lo haría. ¿Su fragmento realmente reproduce el problema? –

+0

Consulte mi edición actualizada, parece ser diferente para una aplicación de Silverlight en comparación con una aplicación de consola. – Aligned

4

Hay una solución para volcar el contenido del diccionario en el depurador.

  1. Para su proyecto, agregue una referencia a la DLL LINQ (por ejemplo System.Core)

  2. Añada la siguiente declaración a su archivo de origen:

    usando System.Linq;

  3. En la ventana de inspección, escriba:

    test.Take (1)

  4. A continuación, expanda la "Vista de resultados" fila del grupo. Esto debería darle la lista familiar de claves, pares de valores.

[Esta solución fue reportado por rickpastoor en connect.microsoft.com para Bug 557741]

Cuestiones relacionadas