Understanding VS.NET public and private assemblies

As you might have noticed, the Add Reference dialog in Visual Studio displays all the assemblies in the GAC, which brings up the following question: is there a way to have this list display assemblies that aren’t in the GAC? The answer is yes, and the technique couldn’t be easier.

Use the REGEDIT utility to browse the following registry key:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio7.0AssemblyFolders _    PublicAssemblies

This key has a value that contains a path to a directory, for example:

C:Program FilesMicrosoft Visual Studio .NETCommon7IDEPublicAssemblies

It turns out that all the assemblies deployed in this directory appear in the Add Reference and the Object Browser’s Component Selector dialog box. These assemblies typically run inside the environment and are called by macros, add-ins, or user code. For example, this directory contains the extensibility.dll and VSlangProj.dll, which are wrappers around COM objects and that are used to create add-ins.

If you have assemblies that should run inside the environment but shouldn’t appear in the above dialog boxes and aren’t called by user code, you can deploy to another directory named PrivateAssemblies, for example:

C:Program FilesMicrosoft Visual Studio .NETCommon7IDEPrivateAssemblies

Share the Post:
Share on facebook
Share on twitter
Share on linkedin


Recent Articles: