COM Components and Side-by-Side Execution

Multiple versions of a managed application that run side-by-side on a computer can interoperate with unmanaged COM components. Neither the managed application nor the COM component requires any modification for side-by-side execution to work properly. This topic introduces COM issues that are related to side-by-side execution.

Note

This article describes side-by-side execution of unmanaged COM components that are used by managed applications. This is a different feature from the in-process side-by-side execution of managed COM components by unmanaged applications such as Microsoft Excel, as described in Side-by-Side Execution for COM Interop.

COM Side-by-Side Assemblies

Side-by-side assemblies are unmanaged assembly versions running on the same computer. To use COM side-by-side assemblies, a .NET Framework application developer must provide a Win32-style application manifest, which contains binding and activation information. To learn more about COM side-by-side assemblies, search for "Side-by-Side Assemblies" in the MSDN Library.

Primary Interop Assemblies

The Type Library Importer (Tlbimp.exe) imports type library information as metadata in assemblies to expose a COM component to managed applications. When you have multiple versions of a COM component, you can have multiple type libraries, and possibly multiple versions of a primary interop assembly. In this situation, you have two choices:

  • You can register the newer primary interop assembly, overwriting the older version in the registry.

  • You can register a single primary interop assembly that supports multiple type libraries.

For instructions on specifying multiple type library versions in a single primary interop assembly, see Generating Primary Interop Assemblies.

See Also

Concepts

Runtime Initialization from a COM Application

Version-Dependent Registry Keys

Configuring a COM Application for Side-by-Side Execution

Applying Version-Dependent Attributes

Other Resources

Side-by-Side Execution for COM Interop