Procedura: Generare assembly di interoperabilità primari tramite Tlbimp.exeHow to: Generate Primary Interop Assemblies Using Tlbimp.exe

È possibile generare un assembly di interoperabilità primario in due modi:There are two ways to generate a primary interop assembly:

  • Usando l'Utilità di importazione della libreria dei tipi (Tlbimp.exe) fornita da Windows SDK.Using the Type Library Importer (Tlbimp.exe) provided by the Windows SDK.

    Il modo più semplice per produrre assembly di interoperabilità primari consiste nell'usare Tlbimp.exe (utilità di importazione della libreria dei tipi).The most straightforward way to produce primary interop assemblies is to use the Tlbimp.exe (Type Library Importer). Tlbimp.exe fornisce le misure di sicurezza seguenti:Tlbimp.exe provides the following safeguards:

    • Verifica di altri assembly di interoperabilità primari registrati prima della creazione di nuovi assembly di interoperabilità per eventuali riferimenti annidati alla libreria dei tipi.Checks for other registered primary interop assemblies before creating new interop assemblies for any nested type library references.

    • Nessuna generazione di assembly di interoperabilità primari se non viene specificato il nome del contenitore o del file, in modo da assegnare all'assembly di interoperabilità primario un nome sicuro.Fails to emit the primary interop assembly if you do not specify either the container or file name to give the primary interop assembly a strong name.

    • Nessuna generazione di assembly di interoperabilità primari se vengono omessi i riferimenti agli assembly dipendenti.Fails to emit a primary interop assembly if you omit references to dependent assemblies.

    • Nessuna generazione di assembly di interoperabilità primari se vengono aggiunti riferimenti ad assembly dipendenti che non sono assembly di interoperabilità primari.Fails to emit a primary interop assembly if you add references to dependent assemblies that are not primary interop assemblies.

  • Creazione manuale di assembly di interoperabilità primari nel codice sorgente mediante un linguaggio conforme con la specifica CLS (Common Language Specification), ad esempio C#.Creating primary interop assemblies manually in source code by using a language that is compliant with the Common Language Specification (CLS), such as C#. Questo approccio è utile quando non è disponibile una libreria dei tipi.This approach is useful when a type library is unavailable.

Per firmare l'assembly con un nome sicuro, è necessario disporre di una coppia di chiavi crittografiche.You must have a cryptographic key pair to sign the assembly with a strong name. Per informazioni dettagliate, vedere Creazione di una coppia di chiavi.For details, see Creating A Key Pair.

Per generare un assembly di interoperabilità primario tramite Tlbimp.exeTo generate a primary interop assembly using Tlbimp.exe

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

    tlbimp filetbl /primary /keyfile: nomefile /out: nomeassemblytlbimp tlbfile /primary /keyfile: filename /out: assemblyname

    In questo comando filetlb è il file che include la libreria dei tipi COM, nomefile è il nome del contenitore o del file che include la coppia di chiavi e nomeassembly è il nome dell'assembly da firmare con un nome sicuro.In this command, tlbfile is the file containing the COM type library, filename is the name of the container or file that contains the key pair, and assemblyname is the name of the assembly to sign with a strong name.

Gli assembly di interoperabilità primari possono fare riferimento solo ad altri assembly di interoperabilità primari.Primary interop assemblies can reference only other primary interop assemblies. Se l'assembly fa riferimento a tipi da una libreria dei tipi COM di terze parti, sarà necessario ottenere un assembly di interoperabilità primario dal server di pubblicazione prima di potere generarne uno.If your assembly references types from a third-party COM type library, you must obtain a primary interop assembly from the publisher before you can generate your primary interop assembly. Se si è il server di pubblicazione, sarà necessario generare un assembly di interoperabilità primario per la libreria dei tipi dipendente prima di generare l'assembly di interoperabilità primario di riferimento.If you are the publisher, you must generate a primary interop assembly for the dependent type library before generating the referencing primary interop assembly.

Un assembly di interoperabilità primario dipendente con un numero di versione diverso da quello della libreria dei tipi originali non è rilevabile quando installato nella directory corrente.A dependent primary interop assembly with a version number that differs from that of the original type library is not discoverable when installed in the current directory. È necessario registrare l'assembly di interoperabilità primario dipendente nel Registro di sistema di Windows oppure usare l'opzione /reference per assicurarsi che Tlbimp.exe trovi il file DLL dipendente.You must either register the dependent primary interop assembly in the Windows registry or use the /reference option to be sure that Tlbimp.exe finds the dependent DLL.

È anche possibile eseguire il wrapping di più versioni di una libreria dei tipi.You can also wrap multiple versions of a type library. Per istruzioni, vedere Procedura: Eseguire il wrapping di più versioni delle librerie dei tipi.For instructions, see How to: Wrap Multiple Versions of Type Libraries.

EsempioExample

L'esempio seguente importa la libreria dei tipi COM LibUtil.tlb e firma l'assembly LibUtil.dll con un nome sicuro usando il file di chiave CompanyA.snk.The following example imports the COM type library LibUtil.tlb and signs the assembly LibUtil.dll with a strong name using the key file CompanyA.snk. Omettendo un nome di spazio dei nomi specifico, questo esempio produce lo spazio dei nomi predefinito, LibUtil.By omitting a specific namespace name, this example produces the default namespace, LibUtil.

tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /out:LibUtil.dll

Per un nome più descrittivo (in base alle indicazioni di denominazione NomeFornitore.NomeLibreria), l'esempio seguente esegue l'override del nome del file di assembly e del nome di spazio dei nomi predefiniti.For a more descriptive name (using the VendorName.LibraryName naming guideline), the following example overrides the default assembly file name and namespace name.

tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /namespace:CompanyA.LibUtil /out:CompanyA.LibUtil.dll

L'esempio seguente importa MyLib.tlb, che fa riferimento a CompanyA.LibUtil.dll e firma l'assembly CompanyB.MyLib.dll con un nome sicuro usando il file di chiave CompanyB.snk.The following example imports MyLib.tlb, which references CompanyA.LibUtil.dll, and signs the assembly CompanyB.MyLib.dll with a strong name using the key file CompanyB.snk. Lo spazio dei nomi, CompanyB.MyLib, esegue l'override del nome di spazio dei nomi predefinito.The namespace, CompanyB.MyLib, overrides the default namespace name.

tlbimp MyLib.tlb /primary /keyfile:CompanyB.snk /namespace:CompanyB.MyLib /reference:CompanyA.LibUtil.dll /out:CompanyB.MyLib.dll

Vedere ancheSee also