2

我有点进退两难。

我被分配了维护现有 ASP.NET Web 应用程序的任务,该应用程序的源代码不可用 - 所有代码都已编译并放入 bin 文件夹中。

现在我需要更改一些方法的实现,这是我第一次处理这种情况,所以我非常感谢您关于最佳方法的建议和建议。

4

3 回答 3

1

例如,您可以尝试使用 Reflector 工具对其进行反编译。真正的问题是:如果没有源代码,您是否可以更改此应用程序?

于 2011-07-19T11:08:32.990 回答
1

您是否需要更改实现以使旧程序集中的所有内部引用都使用新实现?如果是这样,则无法完成,因为它需要您更改遗留二进制文件(至少不是以一种合理的方式维护)。

至于满足客户需求的重构(即来自您可以控制的程序集的引用),我建议您编写代理并用代理替换对遗留库的所有引用。这允许您逐渐扩展/更改遗留库的行为。以后,这将允许您用其他东西更改遗留库。

于 2011-07-19T11:10:14.757 回答
1

以及@codymanix 所说的。

只需使用 ILDASM 反编译程序集。使所需的方法成为虚拟的(或未密封的)。用 ILASM 重新编译。完毕。

您可能必须修复对这些方法的调用才能使用callvirt,而不是call.

于 2011-07-19T11:33:55.993 回答