Friday, January 20, 2006

HowTo: Install new assembly into GAC with key

I made a search on web, and this subject is not clearly defined in anywhere. Here is my blog on it:

1) prepare a key once:> sn.exe -k companyKeyPair.snk

2) on each client:> sn.exe -i companyKeyPair.snk

3) add your key to assemby (CompanyKey)
AssemblyInfo.cs: AssemblyKeyName("CompanyKey")]

4) add your assembly into GAC:> gacutil /i MyObject.dll

5) Now, to make your life easier, know that Visual Studio.NET doesn't check the GAC when you add references to projects. It checks a registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders

If you add a key below that key with a default value (string) of the path of where your assemblies are located, the next run of VS.NET will check that folder and your assemblies will show up in the dialog of the .NET references.



1 comment:

Anonymous said...

How can I get the (physical) installed path of a DLL that is (may be) registered in GAC? This DLL is a control that may be hosted in things other than a .Net app (including IDEs other than VS...).
When I use System.Reflection.Assembly.GetExecutingAssembly().Location, it gives path of GAC folder in winnt\system32 - or in Design mode in VS gives the path to the VS IDE.
I need to get the path where physical dll is actually installed - or the bin/debug or (release) folder for VS.
Reason is that there is an XML file I need to get at in this folder, with config setting that are used both in design mode and at runtime.
Or how is it best to handle this scenario? I have a dubious network location I am using for design mode at the moment... (Don't think that ApplicationData folder is going to cut it (but have the .Net version soved as that's installed via ClickOnce ans can use the Clickonce Data folder) )
c# barcode making