c# - test - sql server to linq
LINQPad en Visual Studio (2)
public static class Extensions{
public static void Dump<T>(this T o) { }
public static void Dump<T>(this T o, string s) { }}
Estas líneas me permiten copiar código de LINQPad a VS y ejecutarlo sin comentar todas las líneas con .Dump () pero no es suficiente ... http://code.google.com/p/linqpadvisualizer/ - no es muy cómodo: (
El mejor resultado que obtengo al buscar LINQPad en VS es este site con el siguiente código de Pat Kujawa.
using System.Diagnostics;
using System.IO;
public static class Extensions
{
public static void Dump<T>(this T o)
{
string localUrl = Path.GetTempFileName() + ".html";
using (var writer = LINQPad.Util.CreateXhtmlWriter(true))
{
writer.Write(o);
File.WriteAllText(localUrl, writer.ToString());
}
Process.Start(localUrl);
}
}
pero Error 1 El nombre ''LINQPad'' no existe en el contexto actual
No pude encontrar ningún LINQPad.dll en la red
Además de las respuestas dadas anteriormente, encontré una solución simple para hacer la depuración "in situ" dentro de Visual Studio (2015).
Preparación
Como escribió Ray Vega, agregue una referencia a la versión x86 (¡recuerde que Visual Studio aún no es de 64 bits!) De LinqPad (es decir, Agregar referencia -> Busque la ubicación del archivo binario exe que se encuentra típicamente en su directorio de instalación C: / Archivos de programa / LINQPad / -> seleccione LINQPad.exe.)
En el ámbito en el que desea utilizar el volcado, agregue:
public static dynamic dump = LINQPad.Util.CreateXhtmlWriter();
Para volcar, agregue a su código donde necesite un volcado:
dump.Write(obj); // obj = the object to dump
Agregue puntos de interrupción cuando sea necesario.
Nota: si necesita compatibilidad con el método LinqPad .Dump () , declare lo siguiente en lugar de los pasos 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, coloque el punto de interrupción en la línea donde está la declaración de return objToDump
.
Visualización
En la ventana del reloj, agregue
dump.ToString()
Haga clic en el icono del catalejo y seleccione "Visualizador de HTML".
Cuando se alcanza un punto de ruptura, puede hacer clic en el catalejo y en la ventana emergente que se abre puede ver el volcado renderizado (tal como lo vería en LinqPad).
En este ejemplo, la expresión
dump.Write(new string[] { "a", "b" });
o (si prefiere la otra sintaxis utilizando el método de extensión mencionado anteriormente)
(new string[] { "a", "b" }).Dump();
fue rendido
Tenga en cuenta que
- Debido a que estamos usando
dynamic
, a veces se requiere agregar explícitamenteMicrosoft.CSharp
a las referencias del proyecto o aparecerá un mensaje de error. Vea la discusión here . - necesita usar .NET Framework 4.5.2 o superior, las versiones de marco inferiores no funcionarán
- Al igual que en LinqPad, todo lo que vuelvas se agregará.
debe usar esto solo en pruebas unitarias, no en el código de producción, porque cuando implementa su aplicación, las declaraciones de volcado todavía están allí. Por supuesto, puede rodear todas las declaraciones de volcado (incluida la declaración del paso 2. en la sección de preparación) por
#if
declaraciones de#if
como:#if DEBUG
dump.Write(new string[] { "a", "b" });
#endif
En caso de que desee vincular la referencia de LinqPad a la configuración DEBUG solamente, puede encontrar una pista here (o más detalladamente there ) cómo puede lograrlo.
No es un archivo DLL para LINQPad al que debe hacer referencia, sino a LINQPad.exe.
Haga clic con el botón derecho en su proyecto en Visual Studio -> Agregar referencia -> Busque la ubicación del archivo binario exe que normalmente se encuentra en su directorio de instalación C:/Program Files/LINQPad/
-> seleccione LINQPad.exe
.
Una vez hecho esto, entonces puede agregar una "directiva utilizando" en su archivo:
using System.Diagnostics;
using System.IO;
using LINQPad;
El método LINQPad.Util.CreateXhtmlWriter
ahora estará disponible para que lo use.