是否存在ILSplit.exe,相当于ILMerge.exe,或者如何制作它

本文关键字:exe 何制作 或者 相当于 存在 ILSplit 是否 ILMerge | 更新日期: 2023-09-27 18:16:07

是否存在将单个。net程序集拆分为完整程序集的子集的实用程序?即ILMerge.exe的"功能逆"?

这个工具,当然,如果它必须跟踪类,函数等之间的依赖关系,那么它将很难产生。

然而,我正在寻找的是一个案例,我有一个非常大的(数百MB)混合模式汇编,主要是静态类和静态方法,基本上只是一个函数库。虽然,通过一些DLLMain初始化和类似的。

我想要的是能够在我想要保留在子集集中的特定静态类上指定静态方法列表。从技术上讲,这应该是可能的,因为程序集只是具有标准化格式的二进制信息。

那么这存在吗?或者这是怎么产生的?或者为什么这是不切实际的?

是否存在ILSplit.exe,相当于ILMerge.exe,或者如何制作它

不,这个工具很可能不存在。尽管工具的缺失是无法被否定的。

这些IL重写技巧无论如何都不能在混合模式程序集上工作,ILMerge也不支持它们。这样的程序集不仅包含IL,还包含机器码和重定位表。没有简单的方法来区分机器代码,主要是因为它不仅是纯代码,而且还包含数据。就像switch语句的跳转表一样。这也是用母语编写代码的程序员不需要使用混淆器的原因。对机器码进行反编译是很费时的,而且总是不完美的。

因此,首先,您的程序集可能很大,因为它有很多本机代码。您需要在项目级别上解决这个问题,并将这个mongo项目分成更小的项目,在它们之间分发源代码。这是工作。这并不总是那么容易,当您这样做时,链接器错误是一个常见的祸害。而且您可能不得不更改代码声明,以便可以导出它们。只有一种方法可以做到这一点,从一开始就把一个子部分分开,这样你就有了一个不大的组装和一个小的组装。清洗并重复。注意成本,许多程序集使程序的冷启动速度变慢。