Prz*_*zek 24 .net c# linqpad visual-studio
public static class Extensions{
public static void Dump<T>(this T o) { }
public static void Dump<T>(this T o, string s) { }}
Run Code Online (Sandbox Code Playgroud)
这些行允许我将代码从LINQPad复制到VS并运行它而不用.Dump()注释每一行但是这还不够...... http://code.google.com/p/linqpadvisualizer/ - 不太舒服: (
我在VS中搜索LINQPad的最佳结果是这个站点,下面是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);
}
}
Run Code Online (Sandbox Code Playgroud)
但错误1当前上下文中不存在名称"LINQPad"
我在网上找不到任何LINQPad.dll
Ray*_*ega 26
它不是LINQPad的dll,你需要引用LINQPad.exe本身.
在Visual Studio中右键单击项目 - >添加引用 - >浏览到通常在其安装目录中找到的exe二进制文件位置C:\Program Files\LINQPad\- >选择LINQPad.exe.
完成后,您可以在文件中为其添加"using directive":
using System.Diagnostics;
using System.IO;
using LINQPad;
Run Code Online (Sandbox Code Playgroud)
LINQPad.Util.CreateXhtmlWriter现在可以使用该方法.
Mat*_*att 18
除了上面给出的答案,我发现了一个简单的解决方案,可以在Visual Studio(2015)中进行"就地"调试.
制备
正如Ray Vega写的那样,添加对LinqPad的x86版本(请记住Visual Studio仍然不是64位!)的引用(即添加引用 - > 浏览到通常位于其安装目录C:\ Program Files \中的exe二进制文件位置LINQPad\ - >选择LINQPad.exe.)
在要使用dump的范围内,添加:
public static dynamic dump = LINQPad.Util.CreateXhtmlWriter();
Run Code Online (Sandbox Code Playgroud)要转储,请在需要转储的代码中添加:
dump.Write(obj); // obj = the object to dump
Run Code Online (Sandbox Code Playgroud)在需要的地方添加断点.
注意:如果您需要与LinqPad .Dump()方法兼容,请声明以下内容而不是步骤2.和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;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,将断点放在return objToDump语句所在的行中.
可视化
在观察窗口中,添加
dump.ToString()
Run Code Online (Sandbox Code Playgroud)
单击spyglass图标并选择"HTML Visualizer".

当遇到断点时,您可以单击望远镜并在弹出窗口中打开,您可以看到渲染的转储(就像您在LinqPad中看到的那样).
在这个例子中,表达式
dump.Write(new string[] { "a", "b" });
Run Code Online (Sandbox Code Playgroud)
或(如果您更喜欢使用上面提到的扩展方法的其他语法)
(new string[] { "a", "b" }).Dump();
Run Code Online (Sandbox Code Playgroud)
被渲染了.
注意
dynamic,有时需要明确添加Microsoft.CSharp到项目的引用,否则您将收到错误消息.见这里的讨论.您应该仅在单元测试中使用它,而不是在生产代码中使用它,因为在部署应用程序时,转储语句仍然存在.当然,您可以通过以下语句包围所有转储语句(包括准备部分中步骤2中的#if语句):
#if DEBUG
dump.Write(new string[] { "a", "b" });
#endif
| 归档时间: |
|
| 查看次数: |
8517 次 |
| 最近记录: |