2013-03-17 161 views
5

我的Visual Studio 2010解决方案引用了第三方专有DLL。第三方DLL没有“强名”?

当我尝试编译错误消息读解:

无法发出组装:引用的程序集“NameOfAssembly.DLL”并不 没有强名称

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

回答

2

如果你想要强签名的程序集,所有的引用必须是强签名的。这entry描述的步骤。

6

这是由任何创造他人使用的集会的犯罪过失,因为在建造集会时给集会一个强大的名字是多么微不足道。之后做这件事非常痛苦,你必须用ildasm.exe反编译程序集,然后使用/ key选项将它与ilasm.exe一起放回。

如果你与店主有工作关系,然后给他们发送一张讨厌的图。如果你不这样做,那么你可能应该质疑组件的质量,这是一个重大的监督,并显示很少有人实际使用该组件的证据。

+0

我可以使用'al.exe'吗? – CJ7 2013-03-17 13:05:16

+0

嗯,取消第一段并发送该电子邮件。 – 2013-03-17 13:11:28

+2

@HansPassant有趣的是,Dapper也没有签名。我们目前不得不使用Dapper Nuget包来解决这个问题。我们需要我们的源代码上签名的程序集,我们通过集成Dapper源代码来完成。 – 2013-11-15 15:28:27

2

请确保您获得许可将反汇编程序集设置为强名称。我不希望你有任何法律上的麻烦。您可以使用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版。