GeekZilla
Adding a Strong Name to an existing DLL that you don't have the source to
There are times when you need a DLL to have a strong name; putting it in the GAC for example. With 3rd party DLL's this could be a pain. This is how you do it:
From a VS.NET command prompt, enter the following:
1. Generate a KeyFile
sn -k keyPair.snk
2. Get the MSIL for the assembly
ildasm SomeAssembly.dll /out:SomeAssembly.il
3. Rename the original assembly, just in case
ren SomeAssembly.dll SomeAssembly.dll.orig
4. Build a new assembly from the MSIL output and your KeyFile
ilasm SomeAssembly.il /dll /key= keyPair.snk
Where do these tools live
If you've not got your framework and sdk paths properly mapped... In framework 2 this is where the command line utilities live:
- C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm.exe
- C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe
- C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sn.exe
Paul is the COO of kwiboo ltd and has more than 20 years IT consultancy experience. He has consulted for a number of blue chip companies and has been exposed to the folowing sectors: Utilities, Telecommunications, Insurance, Media, Investment Banking, Leisure, Legal, CRM, Pharmaceuticals, Interactive Gaming, Mobile Communications, Online Services.
Paul is the COO and co-founder of kwiboo (http://www.kwiboo.com/) and is also the creator of GeekZilla.
Comments
Lex Li said:
What about resources files generated by ildasm? How can I embed them to the signed assembly? It seems that ilasm only accepts one /res.
Dast said:
Very, very helpful.
Nagamohan kumar said:
Hai Paul ,
This is Pretty Cool Thanks
Ralphy P said:
Genius, saved my bacon that one. Thanks.
Magaly Vargas said:
Thank you very much
Runil said:
THANKS A LOT MAN!!! THIS SAVED MY LIFE!!!
Wayne said:
Great stuff - really helped me out!!
Dili said:
That saved my day. Awesome posting buddy.
Karthi said:
Great Thanks for your valuable information
Sunikumar said:
Thanks Saved My time
Bhavesh said:
`How Can DO it in ubuntu?
AndreOliveira said:
I'm having some problems with the last step...
I'm getting this error:
"Assembling 'keyPair.snk' to EXE --> 'Interop.SourceSafeTypeLib.exe'
Source file is ANSI
keyPair.snk(1) : error : Syntax error at token '' in :
*** FAILURE ***"
How can I manage this???
Thanks in advance...
Romy said:
You made my day
Vadim said:
I'm trying to add one of the OpenOffice 3 DLLs to the GAC, and when was using your method I've got "FAILURE" result because of compile errors like:
cli_uno.il(20302) : error -- Cannot compile native/unmanaged method
cli_uno.il(20309) : error -- Local (embedded native) PInvoke method, the resulting PE file is unusable
May be there are some dependencies in that dll.
How can I solve this ?
sandip said:
Thanks man
U saved me
soadante said:
Really helpful, thanks man!
riva said:
Thank you!
LuizAntonio said:
SomeAssembly.dll This would be the third assembly and SomeAssembly.dll.orig the name of my assembly as Strong Name
I'm waiting and I thank you
vijay said:
I have one dll in C:, when i was excute the 2 point, i got the error "unable ot open classlibrary1.dll
I am trying to excute in vs cmd prompt
ildasm C:\classlibrary1.dll out\:classlibrary1.il
please assist me ASAP
Prabhat said:
Thanks, Very Helpful
Prabhat said:
Hi,
Facing problem when run .EXE that use.tlb file on other system on which .Net framework is not installed.
I would like to ask that to run an application that use .tlb file,we always have .Net Framework on targeted machine.
How to run that application on tageted machine without .Net Framework.
Please suggest.
Atul Goswami said:
Thanx Man .. It saved my lots of Efforts!!
W@rfi said:
Thanks for the post. It was very helpful and saved a lot of my time ....
saritha said:
very helpfull
HR said:
Thanks.
Ben said:
You, my friend, are a legend.
Sadegh said:
Very Very helpful
Thanks.
Sangeet Ahuja said:
Awesome. Thanks,
Billy Westbury said:
Thanks
Chris said:
Nice post. Very useful.