我开发了一个对.NET程序进行瘦身的工具

    我开发了一个对.Net程序瘦身的工具,可以把被引用但是没有被使用的程序集删除。我用它把一个.Net core程序从147兆瘦身到59.5兆。

896567803a64b262ef8ddc44bace5253.png

    .NET中发布程序的时候有对程序集进行剪裁的功能,但是那个功能只能做静态检查。比如我们的项目使用了A程序集,A程序集中的类有M1、M2两个方法,M1方法中又调用了B程序集的代码,M2方法中调用了C程序集的代码。如果我们的程序中只调用了M1方法,而没有调用M2方法,那么用.NET的剪裁是不能把没有被调用的M2方法中的调用的C程序集剪裁掉的。

我的这个工具可以做运行时检查,会把在运行时完全没有被调用(会考虑到反射等动态机制)的程序集删除掉。.NET中发布程序的程序集剪裁功能也不支持WinForm、WPF项目。

    我的这个工具的实现原理并不复杂,但是我找了一圈都没有找到类似软件,所以就自己写了一个。大家如果知道有这样的工具,请告诉我,如果确认这是我的首创的话,我会把这个软件完善(测试各种项目和.NET版本以及各个操作系统的兼容性)后发布并开源。

    如果这个项目开源的话,我会发布到我的自媒体,各位朋友可以关注我的哔哩哔哩、今日头条、抖音、微博、油管等频道,频道名都是“杨中科”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三联竟出了这么赞的杂志!各领域佼佼者畅所欲言,为少年建立思维判断体系!

▲点击查看很多中国小孩的成长是断层的。10岁前被视作可爱稚子,被大人护着走;18岁猛然被定义为成年人,要选择大学、专业,开始面对感情。中间的人生呢?“你是个学生,学习是本职,现在谈什么人生&a…

源码lnmp

1、准备工作:配置yum源安装开发工具、编译工具gcc gcc-c make配置固定ip地址 关闭iptables selinuxnetstat -anpult | grep :3306netstat -anpult | grep :80若端口占用kill并service httpd stop ; chkconfig httpd offservice mysqld stop ; chkconfig mysqld off …

IIS书籍

book.51cto.com/art/200908/146040.htm

基于'sessionStorage'与'userData'的类session存储

Storage.js: 注意:此版本实现的存储在符合Web存储标准(ie8及ie8以上的版本与其他主流浏览器)的情况下与session的周期一致,但在页面不关闭的情况下没有过期时间,ie7及以下版本则默认是永久保存,但可以通过预留的方法setMaxAge(Number age)来设…

Android之FLAG_ACTIVITY_TASK_ON_HOME

FLAG_ACTIVITY_TASK_ON_HOME :把当前新启动的任务置于Home任务之上,也就是按back键从这个任务返回的时候会回到home,即使这个不是他们最后看见的activity 注意这个标记必须和FLAG_ACTIVITY_NEW_TASK一起使用。 实例: 一个apk中有MainActiv…

C# WPF中添加调试信息查看窗体

第一步:添加wpf窗口;第二步:在主窗体image的MouseLeftButtonUp事件中调用调试窗口;StatusViewWindow svWindow new StatusViewWindow();svWindow.Show();第三步:在主窗体中开个线程通过udp接收光电广开的数据&#xf…

杨振宁追求的物理美学,居然在这里实现,物理学史上颜值最高的组合,看完后跪了……

全世界只有3.14 % 的人关注了爆炸吧知识一沙见世界 一花窥天堂手心握无限 须臾纳永恒杨振宁曾说读上面的四句诗可以感受到物理的美但物理的美不止于此物理还有一种庄严美一种神秘美一种初窥宇宙奥秘的畏惧美物理就是如此的迷人任何语言在它的面前都很贫瘠数学让人摆脱了愚昧而…

《SAS编程与数据挖掘商业案例》学习笔记之一

今天有空看到一本挺不错的书,仔细阅读,发现很多有用的知识点,于是认真研读起来,以下是初步的要点笔记。 切换至日志窗口的命令是log、热键是F6; 切换至输出窗口的命令是output、热键是F7; 切换至编辑器窗口…

mysql字段使用timestamp类型和默认值CURRENT_TIMESTAMP表示默认为时间,类似mssql的getdate()功能;字段自增...

在mssql数据库中,时间字段如果想使用当前的时间,默认值是 getdate() 在mysql里面,如果是用 datetime类型,值用now() 是不允许的。 修改为 timestamp类型和默认值CURRENT_TIMESTAMP表示默认为时间,即可以达到mssql里面…

FirewallD is not running

2019独角兽企业重金招聘Python工程师标准>>> 1.发现安装好tomcat后,发现无法访问tomcat首页,后来发现防火墙没有开放8080端口。 需注意的是:CentOS 7防火墙换用Friewalld了,所以要用以下命令将端口号加进防火墙&#x…

Android之FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET:重置该task时清除该activity这个标志将会非常有用当你想在你的应用中有个逻辑切换,例如,一个 e-mail的应用可能用于一个命令去显示附件,这个命令启动一个图片浏览的activity去显示附件&#…

Dom4J 解析xml ,类查询

/*** 从XML文件比对,传入provinceId 返回 provinceShortName * param provinceid* return*/public static String provinceIdEXprovinceCodeFromXml(String provinceid){ String provinceShortName"";try { SAXReader sax new SAXReader(); File filene…

三年租男友回家竟花了10万......

1 不要让别人一天毁了它(素材来源网络,侵删)▼2 每天一个单身小技巧(via.最佳蹲坑读物,侵删)▼3 被封印在木桩里的哆啦A梦(素材来源网络,侵删)▼4 大家的对象都是哪里…

《SAS编程与数据挖掘商业案例》学习笔记之二

继续之前的读书笔记,废话少说,直奔主题。 四.连接数据库的方式 libname形式: Oracle 链接:Libname IBMSHCU oracle userbi passwordbi schemaeduc; DB2链接:libname hsdb db2 userxxx password"xxx" datas…

微信重磅更新!这个功能等了 7 年

腾讯近日发布适用于 Windows 和 macOS 的新版微信客户端,本次主要更新如下:1.自动登录此前微信针对全新“自动登录该设备”功能进行了小范围的测试,本次更新后所有用户都可以使用该功能。当您勾选“自动登录该设备”后,微信将开启…

利用MyBatis Generator自动创建代码

如果你使用过hibernate的eclipse插件自动创建DAO文件,那么就容易理解下面介绍的内容;如果你还没有用过hibernate也无妨。下面介绍使用mybatis 3的eclipse插件自动生成相关文件以及如何使用这些文件。eclipse插件安装地址:http://mybatis.goog…

Navicat Premium 怎么安装比较快

Navicat Premium是一套数据库管理工具,结合其它Navicat成员,支持单一程序同时连接到MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL数据库。将此工具连接数据库,你可以从中看到各种数据库的详细信息.包括报错,等等.当然…

.netCHARTING图表控件详细介绍及下载

.netCHARTING是一款功能强大的图表控件,利用.NET framework和GDI为工作于ASP.NET和Winform的C#和VB.NET开发人员提供可托管的图表解决方案,提供了多种2D和3D图表类型以及组合图、仪表,完全支持iPhone, iOS, Andoid, WP7 & Tablet &#x…

《SAS编程与数据挖掘商业案例》学习笔记之三

五:set语句 1.keep和drop指定变量进入或者不进入pdv eg: Data d1(keepname) data d2 (keepname sex); set sashelp.class(keepname sex rename(namename_new sexsex_new) where(sexM) firstobs3 obs5); Run; 注: 黄色部分标示只有name …

你距离哈佛学霸到底有多远?实力证明,真正的学霸精神不是智商,而是。。。

▲ 点击查看科学家曾在基于脑科学和认知科学后得出一个“学习的金字塔”理论。就是下面这张图:顶端的就是我们所谓的“知识”,但为了可以达到这个顶端,下面有一系列的支撑能力。而引申出来的核心概念,就叫“玩中学”。不要想当然地…