C# 第三方DLL没有';强名称';?
我的C# 第三方DLL没有';强名称';?,c#,.net,vb.net,visual-studio-2010,assembly-signing,C#,.net,Vb.net,Visual Studio 2010,Assembly Signing,我的Visual Studio 2010解决方案引用了第三方专有DLL 当我尝试编译解决方案时,错误消息如下: 无法发出程序集:引用的程序集“NameOfAssembly.DLL”没有 没有一个强有力的名字 此问题的唯一解决方案是使用我自己的密钥对第三方DLL进行签名吗?如果需要强签名程序集,则所有引用都必须是强签名的。这描述了这些步骤。鉴于在构建程序集时给程序集起一个强名称是多么微不足道,任何创建其他人使用的程序集的人都会犯疏忽罪。之后再这样做是相当痛苦的,您必须使用ildasm.exe反编译
Visual Studio 2010
解决方案引用了第三方专有DLL
当我尝试编译解决方案时,错误消息如下:
无法发出程序集:引用的程序集“NameOfAssembly.DLL”没有
没有一个强有力的名字
此问题的唯一解决方案是使用我自己的密钥对第三方DLL进行签名吗?如果需要强签名程序集,则所有引用都必须是强签名的。这描述了这些步骤。鉴于在构建程序集时给程序集起一个强名称是多么微不足道,任何创建其他人使用的程序集的人都会犯疏忽罪。之后再这样做是相当痛苦的,您必须使用ildasm.exe反编译程序集,然后将其与ilasm.exe放回一起,现在使用/key选项
如果你和主人有工作关系,那么给他们发一张鼻窦图。如果您不这样做,那么您可能应该质疑程序集的质量,这是一个重大的疏忽,并表明很少有人实际使用该程序集。确保您获得了将程序集作为强名称进行反向工程的许可。我不想让你有任何法律麻烦。可以使用ILDASM和ILASM命令对程序集进行强名称命名。在Visual Studio命令提示符中 使用ILDASM将程序集转换为MISL代码。 ILDASM MyThirdParty.dll/out:MyThirdParty.il 使用ILASM使用strongname键进行编译。 ILASM MyThirdParty.il/dll/resource=MyThirdParty.res/key=MyKey.snk 如果需要使用强名称键,请使用SN命令。我认为这是-k选项。
如果出现坏映像异常,则检查编译程序集的CLR版本。如果是CLR 2.0/3.5,那么使用“C:\Windows\Microsoft.NET\Framework\v2.0.50727\ILASM”而不是4.0版本。Hmm,删除第一段并发送电子邮件。@HansPassant有趣的是,Dapper也没有签名。我们目前必须通过Dapper Nuget软件包来解决这个问题。我们在源代码上需要签名的程序集,这是我们目前通过集成Dapper源代码完成的。开源项目不太值得nastygram。并不是说你必须把它寄得很远,这是一个StackExchange项目,Marc Gravell是一个经常投稿的人:)最近,还有一个相反的观点,比如