Reflexil的装配更改无效

时间:2012-05-26 19:20:25

标签: reflector reflexil

我正在尝试使用Reflexil更改Net 4.0应用程序的DLL。该目录如下所示:

Main.exe
SomeOther.exe
Lib1.dll
Lib2.dll
Lib3.dll 
...

现在我正在尝试使用Reflector 7.5.3.8 Trail和Reflexil 1.5更改任何这些文件中的IL代码。例如,我从Main.exe中的Main()方法中删除所有代码(主要方法,我确定这一点)只留下一个ret。保存更改后,我仍然看不到任何效果,程序像往常一样启动。

我想问题是,该文件仍然存在某个缓存版本。我该如何解决这个问题?

如何更改DLL的IL代码?

1 个答案:

答案 0 :(得分:2)

经过几个小时的工作,我终于找到了问题。

在安装时,该程序生成了NativeImages - 到目前为止没有任何异常。问题是,

ngen uninstall Lib1.dll

ngen uninstall Main.exe

没有卸载Native Image。为什么?我不知道......我试过了

ngen display Lib1.dll

它说,没有这样的集会。巧合的是,我尝试用find:

列出整个Native Image Cache
ngen display | find "Lib1"

向我展示了它仍在那里(为什么那样?!)。这次我尝试卸载它不是通过卸载Lib1.dll,而是通过执行

ngen uninstall Lib1  (without dll)

这就像一个魅力,并告诉我这个问题。它没有卸载它,因为Native Image Cache中的其他程序集仍然依赖它。我必须首先卸载所有依赖程序集,然后自动删除它。

我希望这有一些帮助。我认为区分文件和程序集一般都很困惑......