Redistributing Primary Interop Assemblies
Primary interop assemblies are redistributed to end users as part of a .NET Framework application. Other than requiring that each relevant COM type library be registered on a user's computer, the deployment of an application containing one or more primary interop assemblies is the same as for any .NET-based application. For a complete description of the deployment features available to you, see Deploying Applications.
By definition, primary interop assemblies are always signed by their publisher to ensure uniqueness. As the single, official definition of the types they describe, you can expect popular primary interop assemblies to be installed in the global assembly cache even if you deploy the same assembly to an application directory. The common language runtime always directs your application to the primary interop assembly in the global assembly cache when both the global assembly and your local assembly have the same vendor signature. In this case, your application is not insulated from version changes initiated by the vendor. When your application requires such insulation, generate your own interop assembly by using Type Library Importer (Tlbimp.exe) instead of using the primary interop assembly.