我正在尝试通过此过程签署一组 DLL:
ildasm
原始 DLL 到 ILilasm
(和强命名)IL 回到 DLL
通过 Visual Studio 对象浏览器看到的每个 DLL 都是正确的,但如果重建的DLL 引用另一个重建的DLL 中的对象(例如扩展其中定义的对象),则无法解析引用。对系统程序集的引用已正确解析。
有人能告诉我为什么吗?
我正在使用具有 x86 架构的 .Net SDK v2。
基于有用的 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 解决方案并编译了所有内容。