gpt4 book ai didi

c# - 是否存在与 ILMerge.exe 等效的 ILSplit.exe,或者如何实现?

转载 作者:太空狗 更新时间:2023-10-29 19:44:10 27 4
gpt4 key购买 nike

是否存在用于将单个 .NET 程序集拆分为完整程序集子集的实用程序? IE。 ILMerge.exe 的“函数逆”?

当然,如果它必须跟踪类、函数等之间的依赖关系等,则该工具将难以生产。

但是,我正在寻找的情况是我有一个非常大(数百 MB)的混合模式程序集,其中大部分是静态类和静态方法,基本上只是一个函数库。虽然,与一些 DLLMain 初始化和类似。

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

那么这是否存在或如何实现?或者为什么这不切实际?

最佳答案

不,这个工具不存在的可能性非常大。尽管工具的缺失永远无法被正面反驳。

这些 IL 重写技巧无论如何都不适用于混合模式程序集,ILMerge 也不支持它们。此类程序集不仅包含 IL,它们还包含机器代码和重定位表。没有简单的方法来区分机器代码,主要是因为它不仅是纯代码,而且还包含数据。就像 switch 语句的跳转表。这也是用母语编写代码的程序员不会为混淆器烦恼的原因。反编译机器代码是一个主要的时间浪费,而且总是不完善。

因此,一方面,您的程序集可能很大,因为它有很多 native 代码。您需要在项目级别解决这个问题,并将这个 mongo 项目拆分成更小的项目,在它们之间分发源代码。那是工作。并不总是那么容易,当您这样做时,链接器错误是一个常见的祸害。并且您可能必须更改 代码声明才能将它们导出。只有一种方法可以做到这一点,从头开始并首先拆分一个子部分,所以现在你有一个不太大的组件和一个小组件。冲洗并重复。请注意成本,许多程序集会使程序的冷启动变慢。

关于c# - 是否存在与 ILMerge.exe 等效的 ILSplit.exe,或者如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16852914/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com