【发布时间】:2020-04-13 19:02:35
【问题描述】:
是否可以让调试器文本可视化器显示与 VS2019 中的控制台输出完美对齐的输出?或者如果合适的话,甚至是其他类型的可视化器类型? DataTable 对象有一个不错的调试可视化工具,但如果您使用的对象不是 DataTables,该怎么办?
下面的例子给出了一个例子。我们正在检查printer 对象。
printer 的控制台输出与预期的间隔很好:
但是,如果您在调试模式下检查对象,则可视化器输出未正确对齐。看起来空格的水平距离小于字母数字字符。
代码:
using System;
using System.Diagnostics;
namespace visualiser
{
[DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")]
public class Printer
{
private string[] columns = {"price", "quantity"};
private double[] values = {12.10, 2};
private string DebuggerDisplay => ToString();
public override string ToString() => StackedStrings();
private string Top()
{
const int padForPeriod = 1;
const int msDigits = 3;
var corner = string.Empty.PadRight(
19 + padForPeriod + msDigits, ' ') + "|" +
columns[0].PadLeft(15) + "|" +
columns[1].PadLeft(15) + "|";
return corner;
}
private string PrintRow()
{
var str = "2018-10-16 17:00:02.115|";
str = str + values[0].ToString().PadLeft(15) + "|" + values[1].ToString().PadLeft(15) + "|";
return str;
}
public string StackedStrings()
{
var str = string.Join(Environment.NewLine, PrintRow());
str = string.Join(Environment.NewLine, Top(), str);
return str;
}
}
class Program
{
static void Main(string[] args)
{
var printer = new Printer();
Console.WriteLine(printer);
Console.ReadKey();
}
}
}
【问题讨论】:
-
@PerryQian-MSFT 我会说这更像是一个 hack/workaround,而不是一个好的解决方案,因为它使 Visual Studio 中的所有文本看起来都很古怪......如果 MSFT 可以在没有的情况下解决这个问题需要这个 hack 将不胜感激!
标签: c# debugging visual-studio-2019 visual-studio-debugging