Reputation: 23275
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?
Upvotes: 6
Views: 13299
Reputation: 941635
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.
Upvotes: 6
Reputation: 119
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.
Upvotes: 4
Reputation: 27889
If you want strong-signed assemblies, all the references must be strong-signed. This entry describes the steps.
Upvotes: 3