我正在尝试用Reflexil更改一个NET4.0应用程序的DLL。该目录如下所示:
Main.exe
SomeOther.exe
Lib1.dll
Lib2.dll
Lib3.dll
...现在我正在尝试用Reflector 7.5.3.8 Trail和Refleil1.5修改这些文件中的一些IL代码。例如,我从Main.exe中的Main()方法( main方法,我确信这一点)中删除了所有代码,只留下了一个ret。保存更改后,我仍然看不到任何效果,程序照常启动。
我猜问题在于,在某个地方仍然存在该文件的缓存版本。我该如何解决这个问题?
要更改DLL的IL代码,我必须执行什么操作?
发布于 2012-05-28 13:59:29
经过几个小时的工作,我终于找到了问题所在。
在安装时,程序生成了NativeImages -到目前为止没有什么异常。问题是,
ngen uninstall Lib1.dll或
ngen uninstall Main.exe未卸载本机映像。为什么?我不知道..。我试过了
ngen display Lib1.dll它说,没有这样的集合。巧合的是,我试图用一个find列出整个Native Image Cache:
ngen display | find "Lib1"这告诉我,它仍然在那里(为什么?!)。这次我不是通过卸载Lib1.dll来卸载它,而是通过执行以下命令来卸载它
ngen uninstall Lib1 (without dll)它就像一个护身符,告诉了我问题所在。它没有卸载它,因为本机映像缓存中的其他程序集仍然依赖于它。我必须先卸载所有依赖程序集,然后它会被自动删除。
我希望这能对你有所帮助。我认为区分文件和程序集真的很混乱……
https://stackoverflow.com/questions/10769092
复制相似问题