前面我们讨论了 ngen 生成的 ni 文件的还原,以及它的加强保护方式阻止还原。
今天我在测试一个 ORM 程序时发现, 用加强保护模式的 ni 文件运行会出现
BadImageFormat 的 异常。
我用ORM程序测试 HVM 核心,顺便也测试了一下加强保护模式的 ni 文件 。
在前文 .Net Native Image 还原的原理和加强保护的方法 中提到了可以通过擦除原始ILCode来加强 ni 文件的保护,让其无法还原。
我用这种模式处理了 这个ORM 程序,在进行数据操作时出现了 BadImageFormat 的异常。
然后我又用普通模式(不擦除ILCode)生成了一个 ni 文件,运行一切正常。
初步估计问题应该出在 ORM 模块,程序界面操作都没有出问题,就在数据库操作是出错。
具体原因还不太清楚,ORM 最大的特性是大量使用了反射,不知道是不是反射的原因造成的?
我之前曾测试过一些简单的使用反射的程序,也没有出现过这样的问题。
估计 AOP 的程序 也会有这样的问题...
感兴趣的朋友可以自己试试.