第三方DLL没有“强名”?

时间:2013-03-17 10:36:59

标签: c# .net vb.net visual-studio-2010 assembly-signing

我的Visual Studio 2010解决方案引用了第三方专有DLL。

当我尝试编译解决方案时,错误消息显示为:

  

无法发出程序集:引用的程序集“NameOfAssembly.DLL”可以   没有强大的名字

使用我自己的密钥签署第三方DLL是解决此问题的唯一方法吗?

3 个答案:

答案 0 :(得分:6)

任何创造其他人使用的集会的人的犯罪疏忽,考虑到在建立集会时给予集会一个强有力的名称是多么微不足道。之后这样做非常痛苦,您必须使用ildasm.exe对程序集进行反编译,并将其与ilasm.exe一起重新组合,现在使用/ key选项。

如果您与所有者有工作关系,那么发送一个讨厌的图表。如果你不这样做,你可能会质疑组装的质量,这是一个重大的疏忽,并且证明很少有人真正使用组件。

答案 1 :(得分:3)

确保您有权将装配体逆向工程化为强名称。我不希望你有任何法律问题。您可以使用ILDASM和ILASM命令对程序集进行强名称。在Visual Studio命令提示符中。

使用ILDASM将程序集转换为MISL代码。 ILDASM MyThirdParty.dll /out:MyThirdParty.il

使用ILASM使用强名称密钥进行编译。 ILASM MyThirdParty.il / dll /resource=MyThirdParty.res /key=MyKey.snk

如果您需要制作强名称密钥,请使用SN命令。我认为它是-k选项。 如果你得到一个BadImage异常,那么你检查一下编译程序集的CLR版本。如果它是一个CLR 2.0 / 3.5,那么使用" C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ ILASM"而不是4.0版本。

答案 2 :(得分:2)

如果您需要强签名程序集,则所有引用都必须是强签名的。这个entry描述了这些步骤。