假设我有一个像这样的有缺陷的应用程序:
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("2 + 1 = {0}", Add(2, 1));
}
static int Add(int x, int y)
{
return x + x; // <-- oops!
}
}
}
该应用程序已经编译并部署到野外。有人发现了这个错误,现在他们正在请求修复它。虽然我可以通过修复重新部署此应用程序,但由于我无法控制的原因,这非常麻烦 - 我只想为该错误编写一个补丁。
具体来说,我想将我自己的 MSIL 插入有问题的汇编源文件中。我以前从未做过这样的事情,谷歌搜索也没有找到任何有用的信息。如果我能在上面的代码中看到如何执行此操作的示例,它将对我有很大帮助:)
如何以编程方式将自己的 MSIL 注入已编译的 .NET 程序集中?
[编辑添加:] 对于那些提问的人:我不需要运行时热交换。对我来说,关闭应用程序、操作程序集,然后再次重新启动程序是完全可以的。
[再次编辑:] 看起来普遍的共识是“操纵议会是一种bad修补程序的方法”。如果它是一个,我不会走那条路bad idea http://weblogs.asp.net/alex_papadimoulis/archive/2005/05/25/408925.aspx.
我将保留这个问题,因为 MSIL 注入可能仍然对其他目的有用:)
我想我会问的问题是“你将如何部署补丁”?在某个地方,您必须部署一些东西来修复已经存在的错误。为什么重新编译 dll 并发布修复版本真的会成为一个问题?我的猜测是,弄清楚如何以编程方式注入 MSIL 将比简单地重新部署固定程序集更麻烦。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)