0

我正在尝试通过此过程签署一组 DLL:

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

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

有人能告诉我为什么吗?

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

4

1 回答 1

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
}

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

sn -T MY_EXT_ASSEMBLY.dll

这应该给出如下结果:

Public key token is 4bdccaff2fa86dee.

我重建了我的 VS 解决方案并编译了所有内容。

于 2013-10-02T15:27:20.977 回答