简单操作让你的.NET托管程序启动更快、体积更小

C#程序实战:将DLL嵌入EXE的两种主流方案详解 在软件开发中,程序集依赖管理是常见的工程挑战,尤其是当应用需要分发给最终用户时。传统方式下,多个分散的DLL文件容易导致部署复杂和版本冲突。其核心原理在于通过资源嵌入和动态加载技术,将依赖库合并到主可执行文件中,从而简化分发流程。这项技术的核心价值在于提升部署体验,实现绿色软件的单文件交付,减少用户环境配置的复杂度。典型的应用场景括桌面客户端工具、内部工具软件以及需要简化安装流程的商业应用。本文聚焦于C#开发领域,深入探讨了通过Costura.Fody实现动态嵌入与加载,以及利用.NET Core官方单文 阅读详情

         很多搞.NET开发的可能也跟都有这个习惯,在编写.NET托管程序的时候,喜欢用到以前的一些类库,或是第三方提供的类库,由于没有采用源码方式来编译(没有编译到同一程序集中).这样一来,编译好的应用程序就可能是N个散列的文件。更有一点需要注意的是,用户可以非常简单的就看出,你用到了哪些第三方的类库...我想这应该都不是大家很喜欢看到的吧,其实,利用.NETZ这个开源的免费小工具,就可以非常简单的达到隐藏具体细节的功能,并且,可以使得程序启动速度加快喔,且看以下对.NETZ的简单介绍。

         .NETZ是一款免费开源工具,它可以压缩和打包微软 .NET 框架可执行文件(EXE, DLL)以使他们更小。更小的可执行文件占用的磁盘空间较少且因为读取文件时对磁盘的访问较少而使读取数度更快。它和PE(portable executable)打包工具不一样,.NETZ是使用 C# 编写的存粹的 .NET 解决方案。.NETZ可以用来打包几乎每一种 .NET 支持的语言编写的程序。.NETZ支持 .NET EXE 和 非共享(non-shared)的 DLL 文件。压缩过的程序能以相同的方式解压缩这些对最终用户是透明的。 

         呵呵,看样子,的确不错吧,下面我们就具体操作一下试试。。。

         以我以前所编写的[ C#开发的SharpDict在线词典]为例子说明,若点下载该程序,可以发现是一个exe文件,那是用了MS一个牛人写的HTML控件(本来在framework1.1下没有WebBrowser控件,需要用到AXbrowser控件了)。借用用了一下牛人的源码,编译成单个文件,看起来还是蛮舒服的。

         前几天,有朋友说我那个程序的界面实在是寒酸,现在的N多软件一般都支持换肤功能,为什么不给SharpDict也加上个换肤功能呢,那样用户体验岂不是又更爽了点?说的也是,那就给增加换肤的功能吧。可手头暂时没有写过换肤的软件,没有相应源码,自己实现起来也太麻烦了。用别人的吧,DOTNETSKIN就是一个不错的控件,只需要调用一个DLL文件,就可以是.NET托管程序有着良好的用户界面。

        

                                      图一、字典增加换肤功能,看起来似乎的确舒服点了 

     可新的问题又来了,多了一个文件,dotnetskin.dll,体积大了“好多”(424K),如图二所示。

图二、使用第三方控件后体积大了不少

        现在我们就使用.NETZ这个工具试试。

       进入./SharpDict/bin/Release/目录,执行以下命令

netz -s -z SharpDict.exe dotnetskin.dll

       

图三、执行打包命令

呵呵,看看效果。嗯看来的确不错,在新产生的目录SharpDict.exe.netz下,可以看到相关文件的确已经合并成一个EXE文件了.体积为244K,不错吧,是不是也想马上试试了呢?

图四、“打包”后体积减小多了

相关资源

DOTNETSKIN http://link-rank.com/

.NETZ下载地址 http://madebits.com/netz/download.php

.NETZ使用帮助 http://madebits.com/netz/help.php

SharpDict下载 http://go.csharp.googlepages.com/SharpDict.exe.netz.rar(美化版)

开源工具NetZ(合并ExeDll,并混淆代码)中文版 奇猫居-神游天地间:http://www.qimao.cn 用法如下:(以下产生的文件都是在exe文件的一个新的子文件夹中) 如果要压缩一个EXE程序,只需要执行: netz app.exe (这样会产生一个zip.dll 文件) 如果要去除这个dll文件,可以执行: netz -z app.exe如果要指定图标,可以执行: netz app.exe -i app.ico 如果要指定版本,使用-n参数 如果程序是控制台程序,需要执行: netz -c app.exe 如果要压缩exe文件和dll文件,可以执行: netz app.exe lib1.dll lib2.dll 产生一个exe类型的单文件,可以执行:(也会产生一个zip.dll文件,要去除这个文件可以使用-z参数) netz -s app.exe lib1.dll lib2.dll netz -s -z app.exe lib1.dll -so(一般使用这几组命令生成一个单文件) 前题:把您的程序放在netz目录下,或者在 netz命令时,指定目录 例:netz -s -z D:\原创软件\QiMao_cn.exe D:\原创软件\XPTable.dll -so 立即下载

相关推荐

.NETZ

.NETZ is a open source tool that compresses and packs the Microsoft .NET Framework executable (EXE, DLL) files in order to make them smaller. Smaller executables consume less disk space and load faster because of fewer disk accesses. Unlike other portable executable (PE) packers, .NETZ uses a pure .NET solution and it is written in C#. .NETZ can be used to pack .NET executables written in almost every .NET language. .NETZ supports both .NET EXE and non-shared DLL files, and it is intended to pack .NET desktop applications. The compressed applications can be used in the same way as the uncompressed ones, transparently to the end user. .NETZ does not pack the .NET run-time. A proper installed .NET run-time must be present in the machine where you run the packed applications. The technique that .NETZ uses is not supported by .NET Compact Framework.

.NETZ 原理分析

.NETZ - .NET Executables Compressor .NETZ compresses the Microsoft .NET Framework executable files in order to make them smaller. Smaller executables consume less disk space and load faster becaus...

weixin_30907935的博客 234

netzGUI(netz图形操作界面)

netz可以合并.net生成的exe dll. 可以合并成单一的启动文件. 可以混淆与压缩. .netz 是命令行 对于初学者不方便的 这个就是netz的GUI 图形操作界面 方便大家操作 如果需要netz 可以去baidu google 找一下就找到了

计算机指令netz,.netzunpack(netZ压缩程序解压工具)

本帖最后由 gfjykldd 于 2018-3-6 23:03 编辑1. 背景原因:最近在学习一款洪水模拟软件,发现该程序为一款.netz压缩的.net程序(WPF+C#),如下图。01.洪水程序检测.png (145.77 KB, 下载次数: 2)洪水程序检测2018-3-6 21:01 上传用dnSpy打开后的代码如下图:02.洪水程序反编译.png (1.18 MB, 下载次数: 1)...

weixin_42515340的博客 493

[转]C#开源资源大汇总

原文:http://joerong666.javaeye.com/blog/189329 C#开源资源大汇总 2008年04月17日 星期四 08:52 A.M. 一、AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架。Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式。这种部署方...

weixin_30555753的博客 2951

进击的.NET 在云原生时代的蜕变

你一定看过这篇文章 《进击的 Java ,云原生时代的蜕变》, 本篇文章的灵感来自于这篇文章。北京时间9.24 就将正式发布.NET Core 3.0, 所以写下这篇文...

dotNET跨平台 297

进击的.NET —— 在云原生时代的蜕变

文章目录默认可执行文件单文件可执行文件程序集链接分层编译ReadyToRun 映像主要版本前滚Docker 和 cgroup 内存限制垃圾回收堆大小减小垃圾回收大型页面支持结语 你一定看过这篇文章 《进击的 Java ,云原生时代的蜕变》, 本篇文章的灵感来自于这篇文章。北京时间9.24 就将正式发布 .NET Core 3.0 , 所以写下这篇文章让大家全面认识 .NET Core。 .NET...

一土宁的博客 537

.Net 5简介

.NET 5.0 初识.NET 5 的开始.NET 5 优势 .NET 5 的开始 .NET5.0正式发布了!这是一个重要的版本—其中也括了C# 5大量新特性和优秀的改进。微软和其他公司的团队已经在生产和性能测试环境中开始使用了。这些团队反馈的结果比较令人满意,它证明了对性能提升及降低Web应用托管成本的机会有积极的表现。 微软希望 .NET Framework .NET Core开发者能够迁移他们的代码和应用到 .NET 5.0 上,为明年发布的 .NET 6.0 将 Xamarin 开发者过渡到统一

lzljgg的博客 3325

zdict:汉典网站数据(汉字、拼音、释义等)

zdict 汉字、拼音、释义等数据。 目前含: 从汉典网站抓取的及其拼音、基本释义,存放在 文件中。抓这些数据的初衷是为了。 汉字频度表 ()

.NET开发者必须学习.NET Core

很多的.NET开发者在接触.Net Core之前,对于linux系统一点也不了解,也未曾有过主动去学习的念头。在接触了.Net Core之后才会慢慢学习linux相关知识...

dotNET跨平台 499

云原生时代, 选择.NET Core

在容器、Kubernetes、DevOps,以及微服务等技术的推动下,2020年云原生势不可挡。.NET Core 也非常契合 云原生对应用运行时的不同需求,.NET Core和kub...

dotNET跨平台 1051

推荐一个.Net应用程序压缩打工具.Netz

<br />      今天在开源中国(www.oschina.com)上发现了一个非常好的开源工具.NETZ,用它可以将.net 程序的可执行文件和依赖的Dll文件打压缩成一个.exe文件,这样在部署应用程序时就不用带那么多的Dll了,一个文件搞定!<br />下载地址为http://madebits.com/netz/download.php,下载后解压到任意文件夹,比如C:/netz-bin-20,将这个目录添加到系统的环境变量中去,因为该工具是基于命令行的。<br />要打程序,先在命令行下转到

大道至简的专栏 1934

反编译 .NETZ 压缩过的exe程序

在网上下载了一个程序,觉得程序功能不错,看程序界面像是用.NET写的(用PEiD查看了,检测结果是Microsoft Visual C# / Basic .NET),于是想用 .NET Reflector反编译看一下代码,如下图: 结果发现这个程序使用.NETZ 压缩过了,整个程序.NET Reflector反编译后就只得到了NetzStarter.cs文件和一个资源文件app.re

智童博客 1672
上一篇: Visual Studio 2005 使用技巧一则
下一篇: 笔记本电脑保养小知识
forlinux
博客等级 码龄20年 53粉丝 95原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值