nie*_*ras 8 .net c# il ilmerge mixed-mode
是否存在将单个.NET程序集拆分为完整程序集子集的实用程序?即ILMerge.exe的"功能逆转"?
当然,如果它必须跟踪类,函数等之间的依赖性等,那么这个工具很难产生.
但是,我正在寻找的情况是我有一个非常大(数百MB)的混合模式程序集,主要是静态类和静态方法,基本上只是一个函数库.虽然,与一些DLLMain初始化和类似.
我想要的是能够在我希望保留在子集程序集中的特定静态类上指定静态方法列表.从技术上讲,这应该是可能的,因为程序集只是具有标准格式的二进制信息.
这是否存在或如何制作?或者为什么这不切实际?
不,这个工具很可能不存在。尽管无法肯定地证明缺乏该工具。
这些 IL 重写技巧无论如何都不适用于混合模式程序集,ILMerge 也不支持它们。此类程序集不仅包含 IL,还包含机器代码和重定位表。没有简单的方法来区分机器代码,主要是因为它不仅仅是纯代码,还包含数据。就像 switch 语句的跳转表一样。这也是用母语编写代码的程序员不关心混淆器的原因。反编译机器代码是一个主要的时间消耗并且总是不完美的。
因此,一方面,您的程序集可能很大,因为它具有大量本机代码。您需要在项目级别解决这个问题,并将这个 mongo 项目拆分为更小的项目,并在它们之间分发源代码。这就是工作。而且并不总是那么容易,当您这样做时,链接器错误是一个常见的祸害。并且您可能必须更改代码声明才能导出它们。只有一种方法可以做到这一点,从头开始,首先分成一个小部分,这样现在你就有了一个不太大的装配体和一个小的装配体。冲洗并重复。请注意成本,许多程序集会使程序的冷启动速度变慢。