Tib*_*org 2 .net c# debugging visual-studio visual-studio-debugging
这里有一个关于在KeyValuePair(TKey,TValue)中覆盖ToString()的问题,这是不可能的.
我看到有一些属性类型,如DebuggerDisplayAttribute,DebuggerTypeProxyAttribute可以控制一个类型显示在调试器的方式.我只使用了调试器可视化工具.
从逻辑上讲,这些属性只能应用于用户定义的类(我认为除了部分类).
那么有没有办法在Visual Studio中控制内置(BCL).NET类型的调试结果?
编辑:为了使它更清晰一点,我主要对该类型的字符串表示感兴趣.它只是为了调试而"覆盖"ToString().
前段时间我写了一篇关于读取SQL异常转储的文章,其中我使用了可视化工具System.Data.SqlClient.SqlParameter.您可以阅读整个帖子以获取一个工作示例,但在您的情况下,需要执行以下步骤:
在文件夹中C:\Users\<your login>\Documents\<your Visual Studio version>\Visualizers有一个名为的特殊文件autoexp.cs,用于存储本地可视化工具设置(使用定义DebuggerDisplayAttribute).如果找不到此文件,可以安全地从中复制<Visual Studio installation folder>\Common7\Packages\Debugger\Visualizers\Original\.然后,您可以在此文件的末尾附加新规则:
[assembly: DebuggerDisplay(@"\{MyKey = {Key}\}", Target = typeof(System.Collections.Generic.KeyValuePair<,>))]
Run Code Online (Sandbox Code Playgroud)
最后,您需要重新编译该文件:
csc /t:library autoexp.cs
Run Code Online (Sandbox Code Playgroud)
并重新启动Visual Studio.您应该在VS调试器中显示KeyValuePair的新字符串表示形式.