Tlbimp.exe (utilità di importazione della libreria dei tipi)

L'utilità di importazione della libreria dei tipi consente di convertire le definizioni dei tipi presenti in una libreria dei tipi COM nelle definizioni equivalenti di un assembly di Common Language Runtime. L'output di Tlbimp.exe è un file binario (assembly) che contiene metadati per il runtime corrispondenti ai tipi definiti all'interno della libreria dei tipi originale. È possibile esaminare questo file con strumenti quali Ildasm.exe.

Questo strumento viene installato automaticamente con Visual Studio e con Windows SDK. Per eseguire lo strumento, si consiglia di utilizzare il prompt dei comandi di Visual Studio o il prompt dei comandi di Windows SDK (shell di CMD). Queste utilità consentono di eseguire facilmente lo strumento, senza dover passare alla cartella di installazione. Per ulteriori informazioni, vedere Prompt dei comandi di Visual Studio e Windows SDK.

  • Se si dispone di Visual Studio installato sul computer: nella barra delle applicazioni, fare clic su Start, fare clic su All Programs, fare clic su Visual Studio, fare clic su Visual Studio Tools e quindi su Visual Studio Command Prompt.

    In alternativa

    Se si dispone di Windows SDK installato sul computer: nella barra delle applicazioni, fare clic su Start, fare clic su All Programs, fare clic sulla cartella di Windows SDK e quindi su Command Prompt (o CMD Shell).

  • Al prompt dei comandi digitare quanto segue:

tlbimp tlbFile [options]

Parametri

Argomento

Oggetto di descrizione

Filetlb

Nome di un file che contiene una libreria dei tipi COM.

Opzione

Oggetto di descrizione

/asmversion:numeroVersione

Consente di specificare il numero di versione dell'assembly da produrre. Specificare Numeroversione nel formato principale.secondaria.build.revisione.

/delaysign

Consente di indicare a Tlbimp.exe di firmare l'assembly risultante con un nome sicuro utilizzando la firma posticipata. È necessario specificare questa opzione con /keycontainer:, /keyfile: o /publickey:. Per ulteriori informazioni sulla firma posticipata, vedere Firma posticipata di un assembly.

/help

Visualizza la sintassi e le opzioni dei comandi dello strumento.

/keycontainer:nomecontenitore

Consente di firmare l'assembly risultante con un nome sicuro utilizzando la coppia di chiavi pubblica/privata presente nel contenitore di chiavi specificato da nomecontenitore.

/keyfile:nomefile

Consente di firmare l'assembly risultante con un nome sicuro utilizzando la coppia di chiavi pubblica/privata ufficiale dell'editore trovata in nomefile.

/namespace:spazio dei nomi

Consente di specificare lo spazio dei nomi in cui si desidera produrre l'assembly.

/noclassmembers

Impedisce a Tlbimp.exe di aggiungere membri alle classi. In questo modo è possibile evitare un potenziale TypeLoadException.

/nologo

Evita la visualizzazione del messaggio di avvio Microsoft.

/out:nomefile

Consente di specificare il nome del file di output, l'assembly e lo spazio dei nomi in cui si desidera scrivere le definizioni dei metadati. L'opzione /out non ha alcun effetto sullo spazio dei nomi dell'assembly se la libreria dei tipi specifica l'attributo personalizzato del linguaggio di definizione dell'interfaccia (IDL, Interface Definition Language) che controlla in modo esplicito lo spazio dei nomi dell'assembly. Se non si specifica questa opzione, Tlbimp.exe scrive i metadati in un file avente lo stesso nome della libreria dei tipi definita all'interno del file di input e gli assegna l'estensione DLL. Se il file di output ha lo stesso nome del file di input, lo strumento genera un errore al fine di non sovrascrivere la libreria dei tipi.

/primary

Consente di produrre un assembly di interoperabilità primario per la libreria dei tipi specificata. All'assembly vengono aggiunte informazioni che indicano che l'assembly è prodotto dall'editore della libreria dei tipi. Specificando un assembly di interoperabilità primario, si rende differente l'assembly di un editore da qualsiasi altro assembly creato dalla libreria dei tipi utilizzando Tlbimp.exe. È necessario utilizzare solo l'opzione /primary se l'utente è l'editore della libreria dei tipi che si sta importando con Tlbimp.exe. Notare che è necessario firmare un assembly di interoperabilità primario con un nome sicuro. Per ulteriori informazioni, vedere Assembly di interoperabilità primari.

/publickey:nomefile

Consente di specificare il file che contiene la chiave pubblica da utilizzare per firmare l'assembly risultante. Se si specifica l'opzione /keyfile: o /keycontainer: anziché /publickey:, Tlbimp.exe genera la chiave pubblica dalla coppia di chiavi pubblica/privata fornita con /keyfile: o /keycontainer:. L'opzione /publickey: supporta scenari di firma posticipata e chiavi di prova. Il file è nel formato generato da Sn.exe. Per ulteriori informazioni, vedere l'opzione -p di Sn.exe in Sn.exe (Strumento nome sicuro).

/reference:nomefile

Consente di specificare il file di assembly da utilizzare per risolvere i riferimenti a tipi definiti all'esterno della libreria dei tipi corrente. Se non si specifica l'opzione /reference, Tlbimp.exe importa automaticamente in modo ricorsivo qualsiasi libreria dei tipi esterna a cui faccia riferimento la libreria dei tipi che viene importata. Se si specifica l'opzione /reference, lo strumento tenta di risolvere i tipi esterni negli assembly a cui si fa riferimento prima di importare altre librerie dei tipi.

/silent

Evita la visualizzazione dei messaggi di operazione riuscita.

/strictref

Consente di non importare la libreria dei tipi se non è possibile risolvere tutti i riferimenti all'interno dell'assembly corrente, degli assembly specificati con l'opzione /reference o degli assembly di interoperabilità primari registrati.

/strictref:nopia

Analogo a /strictref, ma ignora gli assembly di interoperabilità primari registrati.

/sysarray

Consente di indicare allo strumento di importare un SafeArray di stile COM come tipo della classe System.Array gestita.

/tlbreference:nomefile

Consente di specificare il file della libreria dei tipi da utilizzare per risolvere i riferimenti alla libreria dei tipi senza consultare il Registro di sistema.

Utilizzando questa opzione non verranno caricati alcuni formati precedenti di librerie dei tipi. È comunque possibile caricare i formati precedenti di librerie dei tipi in modo implicito mediante il Registro di sistema o la directory corrente.

/transform:Nometrasformazione

Consente di trasformare i metadati, come specificato dal parametro Nometrasformazione.

Specificare dispret per il parametro Nometrasformazione per trasformare i parametri [out, retval] dei metodi su interfacce dispatch (dispinterfaces) in valori restituiti.

Per ulteriori informazioni su questa opzione, vedere gli esempi più avanti in questo argomento.

/unsafe

Consente di produrre interfacce senza controlli di sicurezza di .NET Framework. Chiamare un metodo esposto in questo modo può comportare rischi di sicurezza. Non utilizzare questa opzione a meno che non si conoscano i rischi derivanti dell'esposizione di codice di questo tipo.

/verbose

Consente di specificare la modalità dettagliata e visualizzare informazioni aggiuntive sulla libreria dei tipi importata.

/VariantBoolFieldToBool

Converte i campi VARIANT_BOOL nelle strutture in Boolean.

/?

Visualizza la sintassi e le opzioni dei comandi dello strumento.

NotaNota

Le opzioni della riga di comando di Tlbimp.exe non sono soggette alla distinzione tra maiuscole e minuscole e per specificarle non è necessario seguire un ordine particolare.Per identificarle in modo univoco, è sufficiente digitare solo una parte dell'opzione.Pertanto, /n equivale a /nologo e /ou:filedioutput.dll equivale a /out:filedioutput.dll.

Note

Tlbimp.exe converte in blocco l'intera libreria dei tipi. Non è possibile utilizzare Tlbexp.exe per generare informazioni sui tipi per un sottoinsieme dei tipi definiti in una singola libreria dei tipi.

Spesso risulta utile o necessario poter assegnare agli assembly nomi sicuri. Pertanto, Tlbimp.exe include opzioni che permettono di fornire le informazioni necessarie alla generazione di assembly con nomi sicuri. Entrambe le opzioni /keyfile: e /keycontainer: consentono di firmare gli assembly con nomi sicuri. Pertanto, occorre specificare solo una di queste opzioni alla volta.

Quando si importa una libreria dei tipi da un modulo contenente più librerie dei tipi, è possibile aggiungere un ID di risorsa a un file di libreria dei tipi. Tlbimp.exe riesce a individuare questo file solo se si trova nella directory corrente o se si specifica il relativo percorso completo. Vedere l'esempio riportato più avanti in questo argomento.

Esempi

Il comando riportato di seguito consente di generare un assembly con lo stesso nome della libreria dei tipi presente in myTest.tlb e con estensione DLL.

tlbimp myTest.tlb 

Il comando riportato di seguito consente di generare un assembly di nome myTest.dll.

tlbimp  myTest.tlb  /out:myTest.dll

Il comando riportato di seguito consente di generare un assembly con lo stesso nome della libreria dei tipi specificato da MyModule.dll\1 e con estensione DLL. MyModule.dll\1 deve trovarsi nella directory corrente.

tlbimp MyModule.dll\1

Il comando riportato di seguito consente di generare un assembly di nome myTestLib.dll per la libreria dei tipi TestLib.dll. L'opzione /transform:dispret trasforma tutti i parametri [out, retval] dei metodi sulle interfacce dispatch nella libreria dei tipi in valori restituiti nella libreria gestita.

tlbimp TestLib.dll /transform:dispret /out:myTestLib.dll

La libreria dei tipi TestLib.dll, nell'esempio precedente, include un metodo dell'interfaccia dispatch denominato SomeMethod che restituisce un valore void e presenta un parametro [out, retval]. Il codice riportato di seguito è la firma del metodo della libreria dei tipi di input per SomeMethod in TestLib.dll.

void SomeMethod([out, retval] VARIANT_BOOL*);

Se si specifica l'opzione /transform:dispret, Tlbimp.exe trasformerà il parametro [out, retval] di SomeMethod in un valore restituito bool. Di seguito è riportata la firma del metodo prodotta da Tlbimp.exe per SomeMethod nella libreria gestita myTestLib.dll quando viene specificata l'opzione /transform:dispret.

bool SomeMethod();

Se si utilizza Tlbimp.exe per produrre una libreria gestita per TestLib.dll senza specificare /transform:dispret, verrà prodotta la firma del metodo riportata di seguito per SomeMethod nella libreria gestita myTestLib.dll.

void SomeMethod(out bool x);

Vedere anche

Riferimenti

Tlbexp.exe (utilità di esportazione della libreria dei tipi)

Ildasm.exe (disassemblatore MSIL)

Sn.exe (strumento Nome sicuro)

Prompt dei comandi di Visual Studio e Windows SDK

Concetti

Importazione di una libreria dei tipi come assembly

Assembly con nomi sicuri

Attributi per l'importazione di librerie dei tipi in assembly di interoperabilità

Altre risorse

Strumenti di .NET Framework

Riepilogo della conversione da libreria dei tipi ad assembly

Cronologia delle modifiche

Data

Cronologia

Motivo

Aprile 2011

Sono state aggiunte informazioni sull'utilizzo di Visual Studio e dei prompt dei comandi di Windows SDK.

Miglioramento delle informazioni.

Maggio 2010

È stato aggiunto uno switch mancante.

Correzione di bug nel contenuto.