Procedura: Registrare assembly di interoperabilità primariHow to: Register Primary Interop Assemblies

È possibile effettuare il marshalling delle classi solo tramite l'interoperabilità COM e solo come interfacce.Classes can be marshaled only by COM interop and are always marshaled as interfaces. In alcuni casi l'interfaccia usata per il marshalling della classe è nota come interfaccia di classe.In some cases the interface used to marshal the class is known as the class interface. Per informazioni sull'override dell'interfaccia di classe con un'altra interfaccia, vedere COM Callable Wrapper.For information about overriding the class interface with an interface of your choice, see COM Callable Wrapper.

Anche se gli sviluppatori che vogliono usare i tipi COM di un'applicazione .NET Framework possono generare un assembly di interoperabilità, facendolo creano un problema.Although any developer who wants to use COM types from a .NET Framework application can generate an interop assembly, doing so creates a problem. Ogni volta che uno sviluppatore importa e firma una libreria di tipi COM, crea un set di tipi univoci non compatibili con quelli importati e firmati da un altro sviluppatore.Each time a developer imports and signs a COM type library, that developer creates a set of unique types that are incompatible with those imported and signed by another developer. Per risolvere questo problema di incompatibilità dei tipi, ogni sviluppatore deve ottenere l'assembly di interoperabilità primario fornito e firmato dal fornitore.The solution to this type incompatibility problem is for each developer to obtain the vendor-supplied and signed primary interop assembly.

Se si prevede di esporre tipi COM di terze parti ad altre applicazioni, usare sempre l'assembly di interoperabilità primario fornito dallo stesso editore della libreria di tipi definita.If you plan to expose third-party COM types to other applications, always use the primary interop assembly provided by the same publisher as the type library it defines. Oltre a garantire la compatibilità dei tipi, gli assembly di interoperabilità primari vengono spesso personalizzati dal fornitore per migliorare l'interoperabilità.In addition to providing guaranteed type compatibility, primary interop assemblies are often customized by the vendor to enhance interoperability.

Anche se non si prevede di esporre tipi COM di terze parti, l'uso dell'assembly di interoperabilità primario può facilitare l'interazione con i componenti COM.Even if you do not plan to expose third-party COM types, using the primary interop assembly can ease the task of interoperating with COM components. Tuttavia, questa strategia non fornisce alcuna protezione dalle eventuali modifiche apportate da un fornitore ai tipi definiti in un assembly di interoperabilità primario.However, this strategy provides no insulation from changes a vendor might make to types defined in a primary interop assembly. Quando l'applicazione richiede questo tipo di protezione, generare un proprio assembly di interoperabilità invece di usare l'assembly di interoperabilità primario.When your application requires such insulation, generate your own interop assembly instead of using the primary interop assembly.

È necessario registrare tutti gli assembly di interoperabilità primari acquisiti nel computer di sviluppo prima di potervi fare riferimento con Visual Studio.You must register all acquired primary interop assemblies on your development computer before you can reference them with Visual Studio. Visual Studio cerca e usa un assembly di interoperabilità primario la prima volta che si fa riferimento un tipo da una libreria di tipi COM.Visual Studio looks for and uses a primary interop assembly the first time that you reference a type from a COM type library. Se Visual Studio non riesce a trovare l'assembly di interoperabilità primario associato alla libreria di tipi, chiede di acquisirlo o propone di creare un altro assembly di interoperabilità.If Visual Studio cannot locate the primary interop assembly associated with the type library, it prompts you to acquire it or offers to create an interop assembly instead. Analogamente, anche l'utilità di importazione della libreria dei tipi (Tlbimp.exe) usa il Registro di sistema per trovare gli assembly di interoperabilità primari.Likewise, the Type Library Importer (Tlbimp.exe) also uses the registry to locate primary interop assemblies.

Anche se non è necessario registrare gli assembly di interoperabilità primari, a meno che non si preveda di usare Visual Studio, la registrazione offre due vantaggi:Although it is not necessary to register primary interop assemblies unless you plan to use Visual Studio, registration provides two advantages:

  • Un assembly di interoperabilità primario registrato è contrassegnato chiaramente in corrispondenza della chiave del Registro di sistema della libreria dei tipi originale.A registered primary interop assembly is clearly marked under the registry key of the original type library. La registrazione è il modo migliore per individuare un assembly di interoperabilità primario nel computer in uso.Registration is the best way for you to locate a primary interop assembly on your computer.

  • È possibile evitare di generare accidentalmente un nuovo assembly di interoperabilità e di usarlo se, in futuro, si userà Visual Studio per fare riferimento a un tipo per cui si dispone di un assembly di interoperabilità primario non registrato.You can avoid accidentally generating and using a new interop assembly if, at some time in the future, you do use Visual Studio to reference a type for which you have an unregistered primary interop assembly.

Usare lo strumento di registrazione degli assembly (Regasm.exe) per registrare un assembly di interoperabilità primario.Use the Assembly Registration Tool (Regasm.exe) to register a primary interop assembly.

Per registrare un assembly di interoperabilità primarioTo register a primary interop assembly

  1. Al prompt dei comandi, digitare:At the command prompt, type:

    regasm nomeassemblyregasm assemblyname

    In questo comando, nomeassembly è il nome file dell'assembly che viene registrato.In this command, assemblyname is the file name of the assembly that is registered. Regasm.exe aggiunge una voce per l'assembly di interoperabilità primario nella stessa chiave del Registro di sistema della libreria di tipi originale.Regasm.exe adds an entry for the primary interop assembly under the same registry key as the original type library.

EsempioExample

L'esempio seguente registra l'assembly di interoperabilità primario CompanyA.UtilLib.dll.The following example registers the CompanyA.UtilLib.dll primary interop assembly.

regasm CompanyA.UtilLib.dll

Vedere ancheSee also