使用强名称为程序集签名,但如果某些第三方DLL没有签名怎么办?

14

我了解程序集签名的基本概念,但在使用Telerik或第三方DLL时遇到了问题。 我有一个.exe文件,其中使用了我自己的两个.DLL文件,而这些DLL文件又使用了Enterprise库DLL文件和Telerik DLL文件。

我给所有项目都添加了一个强名称 .snk,但编译器编译时解释说,例如Enterprise library DLLs没有签名,这是有道理的。

我不想使用sn.exe -Vr命令关闭验证,甚至延迟签名我的项目。但这样怎么行呢?感谢任何见解。

2个回答

8

签署/重新签署第三方程序集有些麻烦,但并不需要火箭科学知识。 假设你想用默认的.snk密钥给未签名的dll文件(如System.ComponentModel.Composition.dll)签名:

打开VS命令提示符并切换到包含未签名dll文件的文件夹

ildasm /all /out=System.ComponentModel.Composition.il System.ComponentModel.Composition.dll
ilasm /dll /key=default.snk System.ComponentModel.Composition.il
del System.ComponentModel.Composition.il

在适用于每个VS项目中,删除并重新添加对已签名程序集System.ComponentModel.Composition.dll的引用。


1
安装NuGet包时签名程序集是否推荐? - Vivekh
1
如果.res文件是由ildasm创建的,请不要忘记添加/resource=somename.res - n0rd

-2

8
页面未找到。 - Sameera R.
1
-1 是指链接到资源而不是回答问题。幸运的是,archive.org 上有该页面的缓存版本。 - MrLore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接