CJ7
CJ7

Reputation: 23275

Third party DLL does not have 'strong name'?

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

Answers (3)

Hans Passant
Hans Passant

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

user2205317
user2205317

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

Laurent Etiemble
Laurent Etiemble

Reputation: 27889

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

Upvotes: 3

Related Questions