Third party DLL does not have 'strong name'?

别等时光非礼了梦想. 提交于 2019-12-10 14:27:41

问题


My Visual Studio 2010 solution references a third party proprietary DLL.

When I try to compile the solution the error message reads:

Unable to emit assembly: Referenced assembly 'NameOfAssembly.DLL' does not have a strong name

Is the only solution to this issue to sign the third party DLL with my own key?


回答1:


That's criminal negligence by anybody that creates assemblies used by others, given how trivial it is to give an assembly a strong name while building it. Doing it afterwards is quite painful, you have to decompile the assembly with ildasm.exe and put it back together with ilasm.exe, now using the /key option.

If you have a working relationship with the owner then send them a nastygram. If you don't then you probably should question the quality of the assembly, this is a major oversight and shows evidence that few people actually use the assembly.




回答2:


Make sure you are licensed to reverse-engineer assemblies to as a strong name. I do not want you to have any legal troubles. You can strong name the assembly using the ILDASM and ILASM commands. In a Visual Studio command prompt.

Use the ILDASM to convert the assembly into MISL code. ILDASM MyThirdParty.dll /out:MyThirdParty.il

Use ILASM to compile with a strongname key. ILASM MyThirdParty.il /dll /resource=MyThirdParty.res /key=MyKey.snk

If you need to make a strong name key use the SN command. I think its the -k option. If you get a BadImage exception then you check what CLR version the assembly was compiled in. If its a CLR 2.0/3.5 then use "C:\Windows\Microsoft.NET\Framework\v2.0.50727\ILASM" instead of the 4.0 version.




回答3:


If you want strong-signed assemblies, all the references must be strong-signed. This entry describes the steps.



来源:https://stackoverflow.com/questions/15459816/third-party-dll-does-not-have-strong-name

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!