【发布时间】:2020-06-28 09:24:51
【问题描述】:
我得到了不时更新/发布的 .net dll(最初是用 C# 编写的)。我需要在这个 dll 中修改一小部分代码,以满足我的使用需求。
我每次都可以使用 dnSpy 进行这些更改,但我不喜欢每次都手动进行。
是否有可能实现 dll 内代码更改过程的自动化以及如何实现?
将 dll 转换为 IL 并更改 IL 指令然后再编译回来是否更容易,还是我应该完全反编译为 C# 然后使用 Roslyn 重新编译回来?
我更改的代码始终相同,并更改为相同的结果代码。
【问题讨论】:
-
你要修改的代码不属于公共虚方法吗?
-
只能扩展DLL代码
-
答案应该在bing.com/…之间。
-
这听起来确实像这里的错误方法。任何 good 方法都将涉及一个设计好的扩展点,它允许您在不需要反编译任何东西的情况下影响行为。你不能在这里做吗? 有猴子补丁工具,但是... 至于 C# 与 IL:逆向工程到正确编译的正确 C# 并不总是可靠或可能的。重点:我想不出任何需要您尝试做的事情的好场景。如果您打算能够改变这一点:这将是一个扩展点。我看到人们尝试的最常见原因:绕过许可检查
标签: c# compilation roslyn decompiling intermediate-language