Además de las respuestas dadas anteriormente, encontré una solución simple para realizar una depuración "in situ" dentro de Visual Studio (2015).
Preparación
Como escribió Ray Vega, agregue una referencia a la versión x86 (recuerde Visual Studio todavía no es de 64 bits!) De LINQPad (es decir Agregar referencia ->Busque en la ubicación del archivo binario exe que se encuentra normalmente en su directorio de instalación C: \ Program Files \ LINQPad \ -> seleccione LINQPad.exe.)
En el ámbito en el que desea utilizar volcado, añadir:
public static dynamic dump = LINQPad.Util.CreateXhtmlWriter();
Para volcar, añadir a su código en el que necesita un vertedero:
dump.Write(obj); // obj = the object to dump
Añadir puntos de interrupción cuando sea necesario.
Nota: Si requiere compatibilidad con el LINQPad .dump() método, se declaran los siguientes pasos en lugar de 2. y 3 .:
public static class DumpExtension
{
private static dynamic dump = LINQPad.Util.CreateXhtmlWriter();
public static T Dump<T>(this T objToDump)
{
dump.Write(objToDump);
return objToDump;
}
}
En este caso, el lugar el punto de interrupción en la línea donde está la instrucción return objToDump
.
Visualización
En la ventana de inspección, añadir
dump.ToString()
Haga clic en el icono catalejo y seleccione "HTML visualizador".
Cuando se golpea un punto de interrupción, puede hacer clic en el catalejo y en la ventana emergente que se abre puede ver el volcado procesado (tal como lo vería en LinqPad).
En este ejemplo, la expresión
dump.Write(new string[] { "a", "b" });
o (si se prefiere la otra sintaxis utilizando el método de extensión se ha mencionado anteriormente)
(new string[] { "a", "b" }).Dump();
se prestados.
Tenga en cuenta que
- porque estamos usando
dynamic
, a veces es necesario añadir explícitamente Microsoft.CSharp
a las referencias del proyecto o se obtendrá un mensaje de error. Ver discusión here.
- necesita .NET Framework 4.5.2 o superior, las versiones de marco inferiores no funcionarán
- como en LinqPad, todo lo que vaya a descargar se anexará.
debe usar esto solo en pruebas unitarias, no en el código de producción, porque cuando despliega su aplicación las instrucciones de volcado siguen allí. Por supuesto, se puede rodear todas las declaraciones de volteo (incluyendo la declaración del paso 2. En la sección de preparación) por #if
declaraciones como:
#if DEBUG
dump.Write(new string[] { "a", "b" });
#endif
En caso de que quiera obligar a la referencia a LINQPad la configuración de DEPURACIÓN solamente, puede encontrar una pista here (o en más detalle there) cómo puede lograr eso.
No tenía idea de que pudiera hacer referencia a los archivos .exe. Gracias. –
@Przemyslaw Un ensamblaje es un ensamblaje. – Jeremy