从一开始,.NET 运行时所提供的正统打包系统就是程序集集合的方式。这虽然比松散的脚本文件或类文件集合的方式好很多,却没有静态连接执行文件或可执行的 JARs 那样方便。 Vasian Cepa 的.NETZ 为广大的开发人员带来了压缩.NET 程序集和打包到单一执行文件的功能。
默认情况下,.NETZ 支持用#ZipLib 或.NET 2.0 的 IO.Compression.DeflateStream 来进行压缩。如果有必要,可以创建额外的压缩提供器。理论上,新的压缩提供器也能包含加密功能,不过类似的提供器还没有直接内置。
它也存在一些限制。在.NET 2.0 项目中,不能支持本地化资源 DLL。不像 1.0 和 1.1,.NET 2.0 不会触发 AssemblyResolve 和 ResourceResolve 事件以动态地解压缩程序集。不过,也有变通的方法的。
这个系统的另外一个限制是,不支持原生 DLL 或由托管 C++ 创建的 DLL。对于后者,是由于“托管 C++ 编译器以一种不被.NET 通用程序集载入程序所理解的方式,优化 PE 文件和 IL 元数据”。
评论