The ideal way to do this would be to install your gis.dll separately and register it in the GAC. However, this would require that each new version of your dll be installed with policy files to point applications using an older version to the newer version. This isn't hard to do, it just requires more work. You can also install the gis.dll file with each extension and put it in the same directory as your extension's assemblies. If you go this route then you have to make sure that you change the version number on the gis.dll file each and every time you make a change and recompile. If you don't then your extensions will use whichever file is loaded first. When the first extension loads, the .NET runtime loads any dependencies that it needs, which will include your gis.dll. When your other extension loads, the gis.dll that sits alongside the extension assembly will NOT be loaded because it has the same version number as the file previously loaded. The .NET runtime can't tell that the gis.dll is different from the one already loaded because it is only looking at the version number. This is why it is important to change the version numbers. Since you're extensions are not using the correct gis.dll, I'm guessing you didn't increment the version number when you made changes to the dll.