在Visual Studio 2013中,如何在调试时将变量的内容转储到文件中?

时间:2014-09-21 22:52:54

标签: visual-studio-2013 visual-studio-debugging

我有一个类型的List,它是从对Entity Framework的调用返回的,还有一堆其他处理,然后被放入变量中,然后被序列化为JSON等等。

如果我可以从每个可用的数据中获取数据来分析出错的地方(或者对于那个主人来说是正确的),这将非常方便

对于具有少量数据的变量,即时窗口很好,但我正在玩的变量中有超过1000行数据,如果我可以将其放入电子表格中,则更容易过滤。

如果我能提供帮助,我宁愿不用Console.WriteLines或其他Trace来编写我的代码。

那么有一些技巧或扩展,或者只是我可以在立即或命令窗口中输入的一些代码来完成这项工作吗?

我认为这可能是要走的路,但这对我来说并不是很适合。

data.ForEach(Console.WriteLine); 

File.WriteAllLines("C:\temp", data);

链接到Immediate Window

修改

以下是一些不起作用的例子

    [Test]
    public void ImmediateWindowTest()
    {
        var data = new List<dynamic> { new { Z = "A", Y = 1 }, new { Z = "B", Y = 2 } };

        // System.IO.File.WriteAllText (@"c:\temp\foo.txt", data);  
        // -- The best overloaded method match for 'System.IO.File.WriteAllText(string, string)' has some invalid arguments

        // System.IO.File.WriteAllLines(@"c:\temp\foo.txt", data); 
        // -- The best overloaded method match for 'System.IO.File.WriteAllLines(string, string[])' has some invalid arguments

        // System.IO.File.WriteAllLines(@"c:\temp\foo.txt", data.Select(p=>String.Format("{0}, {1}", p.Z, p.Y)); 
        // -- Expression cannot contain lambda expressions

    }

2 个答案:

答案 0 :(得分:3)

我刚刚尝试了立即窗口,它可以提供对输出文件目录的写权限。所以,如果你的代码是:

var a = "Lawrence\r\nLessig";

然后在即时窗口中使用:

File.WriteAllText (@"c:\Users\MyUserLogin\documents\foo.txt", a);

创建包含以下内容的foo.txt:

Lawrence
Lessig

答案 1 :(得分:0)

我在a commercial Visual Studio extension工作,可能会帮助你实现你需要做的事情:

如果您需要过滤列表,可以使用OzCode的Filter。如果要对字段的值进行文本搜索,可以使用OzCode的搜索。如果您只想将对象图导出到一个尚未直接支持的文件,但在执行Search之后,您将在%TEMP%\ OzCode下找到一个包含所有数据的JSON文件(直到你搜索过的对象图中的深度)。