我了解程序集签名的基本概念,但在使用Telerik或第三方DLL时遇到了问题。 我有一个.exe文件,其中使用了我自己的两个.DLL文件,而这些DLL文件又使用了Enterprise库DLL文件和Telerik DLL文件。
我给所有项目都添加了一个强名称 .snk,但编译器编译时解释说,例如Enterprise library DLLs没有签名,这是有道理的。
我不想使用sn.exe -Vr命令关闭验证,甚至延迟签名我的项目。但这样怎么行呢?感谢任何见解。
我了解程序集签名的基本概念,但在使用Telerik或第三方DLL时遇到了问题。 我有一个.exe文件,其中使用了我自己的两个.DLL文件,而这些DLL文件又使用了Enterprise库DLL文件和Telerik DLL文件。
我给所有项目都添加了一个强名称 .snk,但编译器编译时解释说,例如Enterprise library DLLs没有签名,这是有道理的。
我不想使用sn.exe -Vr命令关闭验证,甚至延迟签名我的项目。但这样怎么行呢?感谢任何见解。
签署/重新签署第三方程序集有些麻烦,但并不需要火箭科学知识。 假设你想用默认的.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的引用。
.res
文件是由ildasm
创建的,请不要忘记添加/resource=somename.res
。 - n0rd