我有一个在Visual Basic 2008 Express中创建的项目.我把它从其他人的C#项目转换而来,但它确实有效.它有几个DLL依赖项.我去发布我的项目,所以我可以将它安装在另一台机器上,对于每个DLL,我收到一个错误:"必须强化签名才能被标记为先决条件." 我已经做了一些研究,但是我找不到很多,而且我发现了什么,我真的不明白.这个错误是什么意思?解决它的最佳方法是什么?另一件事:我花了很长时间才能正确引用我的所有dll,所以我更喜欢解决方案与移动DLL无关,因为这可能会破坏我的主项目中的功能.
这是一个经典问题,其中描述了许多解决方案.但是,它们似乎都不适合我.
我在SharePoint解决方案中使用Report.NET库.添加Reports.dll作为参考并在错误消息中编译结果"程序集生成失败 - 参考程序集'报告'没有强名称." 但是,我的项目在项目属性中链接了一个key.snk.所以我尝试用这个密钥文件反汇编,签名和重新组装dll,如别处所述:
C:\Users\Administrator\Documents\Visual Studio 2010\Projects\MyProj
\dll>ildasm Reports.dll /out:Reports.il
C:\Users\Administrator\Documents\Visual Studio 2010\Projects\MyProj
\dll>ilasm Reports.il /dll /resource=Reports.res /key=..\key.snk
<output removed for brevity>
Class 95
Class 96
Method Implementations (total): 1
Resolving local member refs: 0 -> 0 defs, 0 refs, 0 unresolved
Writing PE file
Signing file with strong name
Operation completed successfully
Run Code Online (Sandbox Code Playgroud)
我最终得到了一个新的Reports.dll时间戳.但是,将此作为对项目和构建的引用添加,会提供与以前相同的错误消息."Reports"引用的属性显示"强名称:False".
不要因为有点麻烦而气馁,我尝试使用强命名实用程序重新签名程序集:
C:\Users\Administrator\Documents\Visual Studio 2010\Projects\MyProj
\dll>sn -R Reports.dll ..\key.snk
Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All …Run Code Online (Sandbox Code Playgroud)