?name_of_variable
,这将打印出 所有内容,你可以手动将其复制到任何地方,或者使用即时窗口的日志记录功能自动将其写入文件。
更新: 我假设你在问如何复制/粘贴值的嵌套结构,以便可以在文本中搜索它,或者保存在一边以后比较对象的状态。如果我没错的话,你可能想看看我创建的Visual Studio商业扩展程序,叫做 OzCode,它通过“搜索”和“比较”功能可以更轻松地进行这些操作。
更新2: 为了回答@ppumkin的问题,我们的 新EAP 有一个新的导出功能,允许用户将变量值导出为Json、XML、Excel或C#代码。
完整声明: 我是描述此处工具的共同创造者。(new System.Xml.Serialization.XmlSerializer(obj.GetType())).Serialize(new System.IO.StreamWriter(@"c:\temp\text.xml"), obj)
File.WriteAllText(@"c:\movie.json", JsonConvert.SerializeObject(movie));
。这行代码将把名为 "movie" 的对象序列化成 JSON 格式,并将结果写入到一个名为 "c:\movie.json" 的文件中。 - user890332The debugger is unable to evaluate this expression
. I am using Visual Studio 2019; I substituted obj
with the variable name which is type System.Collections.Generic.List 1[[System.ValueTuple 3[[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7]]
- Drew来自https://dev59.com/dGMk5IYBdhLWcg3w-Spm#23362097的最受欢迎的答案:
如果你非常幸运地已经在你的应用程序域中有Json.Net,那么将以下内容复制到你的立即窗口即可:
Newtonsoft.Json.JsonConvert.SerializeObject(someVariable)
编辑:使用.NET Core 3.0,下面的代码也可以运行:System.Text.Json.JsonSerializer.Serialize(someVariable)
Immediate
控制台(Ctrl + Alt + I
) - undefined有一个名为对象导出器(Object Exporter)的扩展程序可以很方便地完成这个操作。
http://www.omarelabd.net/exporting-objects-from-the-visual-studio-debugger/
扩展程序: https://visualstudiogallery.msdn.microsoft.com/c6a21c68-f815-4895-999f-cd0885d8774f
VSIXInstaller.NoApplicableSKUsException: This extension is not installable on any currently installed products.
- Jess您可以为该对象添加一个监视器,在监视窗口中展开并选择您想要复制的所有内容,然后将其复制。
通过使用属性装饰你的类和方法,你可以在调试时使用DebuggerDisplay属性来显示对象中的特定值,例如:
[DebuggerDisplay("Person - {Name} is {Age} years old")]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
我经常使用:
string myJsonString = JsonConvert.SerializeObject(<some object>);
我复制了字符串的值,但不幸的是也复制了反斜杠。
要删除反斜杠,请访问此处: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_replace
然后在 <p id="demo">Visit Microsoft!</p>
元素内替换文本为你复制的文本。
然后将 var res = str.replace("Microsoft", "W3Schools");
行替换为
var res = str.replace(/\\/g, '')
这是一个很棒的方法!
Sandbox.cs
或者创建控制台应用程序。代码:
[TestClass]
public class Sandbox
{
[TestMethod]
public void GetInitializerCode()
{
var db = TestServices.GetDbContext();
var list = db.MyObjects.ToList();
var literal = ObjectDumper.Dump(list, new DumpOptions
{
DumpStyle = DumpStyle.CSharp,
IndentSize = 4
});
Console.WriteLine(literal); // Some test runners will truncate this, so use the file in that case.
File.WriteAllText(@"C:\temp\dump.txt", literal);
}
}
我曾经使用Object Exporter,但它已经过去5年,并且在Visual Studio中不再受支持。看起来Visual Studio扩展程序时有时无,但希望这个NuGet包会一直存在!(截至本文撰写时也在积极维护)
Object Dumper 是一个免费且开源的扩展,可供 Visual Studio 和 Visual Studio Code 使用。
“Dump as” 命令可以通过 Code 和 Immediate 窗口中的上下文菜单获得。
它能将对象导出为以下格式之一:
我认为搭配Diff 工具 可以更加方便实用。
我是这个工具的作者。
private static void WriteDebugJSON (dynamic obj, string filePath)
{
using (StreamWriter d = new StreamWriter(filePath))
{
d.Write(JsonConvert.SerializeObject(obj));
}
}