阅读本文如果对Microsoft.VisualStudio.DebuggerVisualizers的用法不熟悉的,可以参考这篇文章。http://www.cnblogs.com/devil0153/archive/2010/09/01/Visual-Studio-Custom-Debugger.html

一、 背景介绍及JsonView

由于吾所在的项目中对外开放接口,数据接受和传送都是字符串Json格式,在调试接口阶段,会查看传输数据的内容,如果不经过格式化处理,用肉眼看起来比较费劲和不够直观,经常要把它Copy&Paste到一个Json查看器里,这种操作太多了,就会感到麻烦和繁琐。

之前用过那个Linq可视化工具,挺好用的,所以就联想到应该也有这么一个JsonViewer的工具,Google一下,果然找到了JsonViewer,就下载了这个源码,源码结构如下:

其中JsonVisualizer就是我需要的东西,我直接编译,然后把JsonViewer.dll、JsonVisualizer.dll、Newtonsoft.Json.dll三个文件全部复制,到Vs2010的安装目录"Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers"下。

 二、 调试运行

F5调试

调试状态下,点击那个放大镜旁边的三角向下箭头,可以看到有个JSON选项,点击它,我这里报错了。

************** Exception Text **************
System.InvalidCastException: Unable to cast object of type 'EPocalipse.Json.Visualizer.JsonVisualizer' to type 'Microsoft.VisualStudio.DebuggerVisualizers.DialogDebuggerVisualizer'.
   at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.ManagedShim.DelegatedHost.CreateViewer(IntPtr hwnd, HostServicesHelper hsh, SafeProxyWrapper proxy)

再看详细报错信息

----------------------------------------
Microsoft.VisualStudio.DebuggerVisualizers
    Assembly Version: 10.0.0.0
    Win32 Version: 10.0.30319.1
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualStudio.DebuggerVisualizers/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.DebuggerVisualizers.dll
----------------------------------------
JsonVisualizer
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///D:/Program%20Files/Microsoft%20Visual%20Studio%2010.0/Common7/Packages/Debugger/Visualizers/JsonVisualizer.dll
----------------------------------------
Microsoft.VisualStudio.DebuggerVisualizers
    Assembly Version: 11.0.0.0
    Win32 Version: 11.0.50727.1
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualStudio.DebuggerVisualizers/11.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.DebuggerVisualizers.dll
----------------------------------------

Microsoft.VisualStudio.DebuggerVisualizers加载了两次,因为我电脑上同时安装了VS 2010和VS 2012,看了一下JsonVisualizer项目里Microsoft.VisualStudio.DebuggerVisualizers的引用,确实引用的是VS 2012的,只要删掉重新引用为VS 2010的即可。

然后就能正常运行了。

三、后记

我在想如果要让VS 2012也支持的话,恐怕还要重新引用对应于VS 2012的Microsoft.VisualStudio.DebuggerVisualizers,再把编译后的三个dll文件放到VS 2012对应的目录下。

本文代码下载

让VS 2010在调试字符串时,支持Json数据格式友好显示的更多相关文章

  1. JS中将JSON的字符串解析成JSON数据格式《转》

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...

  2. JSON字符串解析成JSON数据格式

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...

  3. JavaScript中将JSON的字符串解析成JSON数据格式

    1.一种为使用eval()函数 var jsonObj=eval("("+data+")"); 2.使用Function对象来进行返回解析 var jsonst ...

  4. 在JS中将JSON的字符串解析成JSON数据格式

    使用eval函数来解析 <script> var data="{root: [{name:'1',value:'0'},{name:'6101',value:'北京市'},{na ...

  5. js中把JSON字符串转换成JSON对象最好的方法

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...

  6. 使用JavaScriptSerializer序列化集合、字典、数组、DataTable为JSON字符串 分类: 前端 数据格式 JSON 2014-10-30 14:08 169人阅读 评论(0) 收藏

    一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...

  7. wpf控件设计时支持(3)

    原文:wpf控件设计时支持(3) wpf设计时调试 编辑模型 装饰器 1.wpf设计时调试 为了更好的了解wpf设计时框架,那么调试则非常重要,通过以下配置可以调试控件的设计时代码 (1)将启动项目配 ...

  8. 使用 dynamic 标记解析JSON字符串 JDynamic :支持Json反序列化为Dynamic对象

    使用 dynamic 标记解析JSON字符串  http://www.cnblogs.com/taotaodetuer/p/4171327.html 1 string jsonStr = " ...

  9. delphi 2010是动画GIF的支持方法

    下面delphi 2010是动画GIF的支持方法:  1.在窗体上放一个Image1控件.注意:这时设置其Picture属性,加载一幅动画GIF是不会动画显示的.  2.在窗体的FormCreate事 ...

随机推荐

  1. Swift处理堆栈问题——给定两组序列,其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序

    题目:输入两个整数序列.其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序.为了简单起见,我们假设push 序列的任意两个整数都是不相等的.比如输入的push 序列是1. ...

  2. APP邂逅即时通讯云,让你的手机APP聊起来

     #推荐活动# #线下沙龙# 明天下午在IC咖啡 —— <APP邂逅即时通讯云,让你的手机APP聊起来>, http://url.cn/Y8sYo5 

  3. cshtml常用标签

    @RenderSection:在布局页中,将呈现指定部分的内容并指定该部分是否为必需.用法:@RenderSection("PageSpecificStyleSheetIncludes&qu ...

  4. CE 内存申请

    char ch_ReadByte='H'; char *ptr_OneLineData; unsigned ); if ((ptr_OneLineData = (char *)malloc(bufsi ...

  5. 对tomcat中使用反射加载类的理解

    public void init() throws Exception { initClassLoaders(); //加载一下jar包和类 Thread.currentThread().setCon ...

  6. HackerRank-Longest Subarray

    give an array and target value, find the max length of the subarray which sum of the elements is les ...

  7. ACM water

    1000  纯属适应题 1003  做的时候花了很久,现在看好像也不难 1004  适应题,求下平均就行 1005  要读懂题就行 1007  逆序数,discuss方法 1046  全部暴搜一遍.. ...

  8. 记录思想分享知识编辑器 Markdown 编辑阅读器

    web使用:实现网页客户端实时自动解析Markdown为HTML内容小小的展示:Cmd Markdown 编辑阅读器使用必要性:怎样引导新手使用 Markdown? - 写作

  9. window.showModalDialog的简单实践

    Super.jsp - 父窗口 <%@ page language="java" import="java.util.*" pageEncoding=&q ...

  10. 根据Request获取客户端IP 内网IP及外网IP

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...