反汇编和重组的DLL不会解析相互引用

时间:2013-10-02 14:06:47

标签: .net dll il ildasm ilasm

我正试图通过这个过程签署一组DLL:

  • ildasm原始DLL到IL
  • ilasm(和强命名)IL返回DLL

通过Visual Studio对象浏览器看到的每个DLL都是正确的,但是如果重建的 DLL引用另一个重建的 DLL中的对象(例如扩展对象)在其中定义),然后无法解析引用。正确解析了对系统程序集的引用。

有人可以告诉我为什么吗?

我正在使用带有x86架构的.Net SDK v2。

1 个答案:

答案 0 :(得分:1)

根据有用的Marvin Smit评论,我尝试编辑.il生成的ildasm.exe个文件并找到解决方案。

在文本编辑器中打开.il文件,文件的第一行显示对外部程序集的引用:

.assembly extern MY_EXT_ASSEMBLY
{
    .ver 10:0:1:0
}

我改变了这些引用的每一个出现:

.assembly extern MY_EXT_ASSEMBLY
{
    .publickeytoken = (4B DC CA FF 2F A8 6D EE )
    .ver 10:0:1:0
}

通过以下命令(表单SDK)找到.publickeytoken属性的值:

sn -T MY_EXT_ASSEMBLY.dll

这应该给出如下结果:

Public key token is 4bdccaff2fa86dee.

我重建了我的VS解决方案并且不断编译。