dnspy的详细配置,dnspy如何过滤反编译之后的乱码,dnspy如何反编译表达式目录树
dnSpy应该是目前使用最多的.net反编译工具。很多情况下反编译C#代码非常方便,特别是查找基类,子类。搜索一些class,方法。接口,非常方便。比ILspy好很多。而且dnspy是可以配置的。
如果要dnSpy非常干净地显示反编译之后的代码,可以看我具体的配置:
第一张是效果图,过滤一个具体的关键词筛选的时候可以使用【全词匹配】,可以在所有的.net framework中查找你需要寻找的那个关键字,不区分大小写。
右侧底部的这个搜索框是可以配置的,而且有时候很容易被隐藏掉,需要“上拉”才能显示出来。隐藏得比较深。

第二张图:常规情况下,默认sndpy反编译出来会有很多垃圾注释。红色框部分都是我们不需要的,会干扰我们分析代码。如何去掉这些注释的干扰,请看第三张图。

第三张图:菜单导航栏 -> 视图 ->选项 ; 反编译器 -> C# || IL 设置如下即可。有时候为了查看表达式树的内部结构,我们一般不勾选 Expression Tree。查看ExpressionTree内部结构图,图4那样。

第四张图:默认情况下ILSpy要查看表达式目录树的内部实现,是看不到的,需要切换C#版本号,而dnspy更加简洁。直接取消掉ExpressionTree上面勾选即可。
取消对ExpressionTree的反编译,就是上面取消勾选“ExpressionTree”就是下面这种:

勾选 反编译 ExpressionTree 之后,效果如下,看到的是表达式目录树原始的样子:Expression<Func<People, bool>> lambda = (People x) => x.Id.ToString().Equals("5");
大家可以测试一下。

第五张图:一个经常需要用到的工具,就是查看某个类的子类。比如MVC5中的Action返回结构经常是ViewResult(); 除了这个返回值之外,它其实还可以返回所有基于ActionResult的子类。

还一个功能就是 重新加载所有程序集。其实dnspy是有这个功能的。

通过以上对dnspy的配置,基本上可以替代我们日常的反编译工具了。
唯一需要注意的是,exe文件被dnspy打开之后,就是独占的状态,会导致visual studio 2017无法重新编译生成exe。
需要退出dnspy才行。
另外,经常看见博客园中有人丢出一些类图。分析开源项目的框架,继承的一些关系。
比如像这种:

结合这种dnspy的反编译工具,把.net framework的类库摸一个dll反编译出 .sln 的解决方案文件,就可以用vs2017自带的组件“体系结构和分析工具”,
右键解决方案中“项目”——“在代码图中显示”,就可以像上面那样子去深度分析和实践面向对象程序设计了。理解别人的代码的底层实现和设计原理,会有比较大的帮助。


dnspy的详细配置,dnspy如何过滤反编译之后的乱码,dnspy如何反编译表达式目录树的更多相关文章
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- 百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程之更改图片和附件上传路径
本文是接上一篇博客,如果有疑问请先阅读上一篇:百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程 默认UEditor上传图片的路径是,编辑器包目录里面的net目录下 下面就演示如 ...
- POM详细配置
POM的全称是“ProjectObjectModel(项目对象模型)”. pom.xml详解 声明规范 <projectxmlns="http://maven.apache.org/P ...
- squid透明代理+iptables防火墙,多网卡详细配置
squid透明代理+iptables防火墙详细配置 看到很多人都在不停地问iptables+squid做透明代理的问题,鄙人不才,斗胆在此做统一解答.如有任何纰漏还望各位批评指教. ========= ...
- Spring Security3详细配置
Spring Security3详细配置 表名:RESOURCE 解释:资源表备注: 资源表 RESOURCE(资源表) 是否主键 字段名 字段描述 数据类型 长度 可空 约束 缺省值 备注 是 ID ...
- 转载 - Struts2 拦截器详细配置过程
出处:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Inter ...
- 11.IntelliJ IDEA详细配置和使用教程(适用于Java开发人员)
转自:https://blog.csdn.net/chssheng2007/article/details/79638076 前言 正所谓工欲善其事必先利其器,对开发人员而言若想提高编码效率,一款高效 ...
- IntelliJ IDEA详细配置和使用教程(适用于Java开发人员)
关闭Intellij IDEA自动更新在File->Settings->Appearance & Behavior->System Settings->Updates下 ...
- IDEA详细配置+优秀插件
目录 IDEA破解 Settings配置 配置 settings 字体 关闭IDEA更新 设置IDEA打开为项目选择界面 自动导入包配置 显示方法的分割线 滚轮设置字体大小 智能提示忽略大小写 Tab ...
随机推荐
- 仿照jQuery进行一些简单的框架封装(欢迎指教~)
(function(window,undefined){ var arr = [], push = arr.push, slice = arr.slice; //首先要做的就是封装一个parseHtm ...
- 针对XX系统的可用性方面的相关想法(结合书)
在开始对此系统进行再次分析之前,再回顾下可用性.首先,可用性是与系统故障有关的一个质量属性,是指系统正常运行的时间的比例,一般通过两次故障之间的时间长度或在系统崩溃情况下能恢复正常运行的速度来衡量,同 ...
- CSS animation online生成工具
利用HTML5.css的一些动画功能,可以设计出非常炫酷的动画,但是由于并不是所有的浏览器都支持,所以可能需要prefix,这个过程是比较烦的.一个比较好用的线上工具: http://matthewl ...
- SQL Server ->> SQL Server 2016新特性之 -- Dynamic Data Masking
Dynamic Data Masking是为了防止敏感数据暴露给未经授权的用户,以一种最小开销和维护成本的形式.Dynamic Data Masking用于表的字段,相当于盖住字段数据的一部分.比如一 ...
- Go语言 map遍历
1 遍历顺序 Go语言里的map,是不保证遍历顺序的(这一点很好理解).甚至同样内容的map,两次遍历的顺序,也可能不一样.下面是一个例子: m := map[string]int{"a1& ...
- Java文件操作工具类
import com.foriseland.fjf.lang.DateUtil;import org.apache.commons.io.FileUtils;import org.slf4j.Logg ...
- 【2D游戏引擎】WIP反思
WIP(Working In Progress)是我初学游戏引擎开发时候开发的一个2D游戏引擎,当时计划为它实现类似Unity一样的编辑器,具有和Unity相似的工作流,但是由于水平不够,走了很多弯路 ...
- API代理网关和OAuth2.0授权认证框架
API代理网关和OAuth2.0授权认证框架 https://www.cnblogs.com/bluedoctor/p/8967951.html 1,授权认证与微服务架构 1.1,由不同团队合作引发的 ...
- AngularJs学习笔记--Understanding Angular Templates
原版地址:http://docs.angularjs.org/guide/dev_guide.mvc.understanding_model angular template是一个声明规范,与mode ...
- Vue组件绑定自定义事件
Vue组件使用v-on绑定自定义事件: 可以分为3步理解: 1.在组件模板中按照正常事件机制绑定事件: template: '<button v-on:click="increment ...