Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Note
Queste linee guida sono specifiche di .NET Framework. Per l'interoperabilità COM moderna di .NET, usa l'interoperabilità COM generata dal codice sorgente o l'API System.Runtime.InteropServices.ComWrappers. Per altre informazioni, vedere Panoramica dell'interoperabilità COM e Generazione dell'origine COM.
È possibile generare un assembly di interoperabilità primario in due modi:
Usando l'Utilità di importazione della libreria dei tipi (Tlbimp.exe) fornita da Windows SDK.
Il modo più semplice per produrre assembly di interoperabilità primari consiste nell'usare Tlbimp.exe (utilità di importazione della libreria dei tipi). Tlbimp.exe fornisce le misure di sicurezza seguenti:
- Verifica la presenza di altri assembly di interoperabilità primari registrati prima di creare nuovi assembly di interoperabilità per eventuali riferimenti annidati a librerie dei tipi.
- 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.
- Non riesce a generare un assembly di interoperabilità primaria se si omettono i riferimenti agli assembly dipendenti.
- Non genera un assembly di interoperabilità primaria se si aggiungono riferimenti ad assembly dipendenti che non sono assembly di interoperabilità primaria.
Creazione manuale di assembly di interoperabilità primari nel codice sorgente mediante un linguaggio conforme con la specifica CLS (Common Language Specification), ad esempio C#. Questo approccio è utile quando non è disponibile una libreria dei tipi.
Per firmare l'assembly con un nome sicuro, è necessario disporre di una coppia di chiavi crittografiche. Per informazioni dettagliate, vedere Creazione di una coppia di chiavi.
Generare un assembly di interoperabilità primario usando Tlbimp.exe
Al prompt dei comandi digitare:
tlbimptlbfile/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.
Gli assembly di interoperabilità primari possono fare riferimento solo ad altri assembly di interoperabilità primari. Se l'assembly fa riferimento a tipi di una libreria dei tipi COM di terze parti, è necessario ottenere un assembly di interoperabilità primario dall'editore prima di poter generare il proprio assembly di interoperabilità primario. Se si è l'editore, è necessario generare un assembly di interoperabilità primario per la libreria dei tipi dipendente prima di generare l'assembly di interoperabilità primario che vi fa riferimento.
Un assembly di interoperabilità primaria dipendente con un numero di versione diverso da quello della libreria dei tipi originale non è individuabile quando è installato nella directory corrente. È 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.
È anche possibile creare un wrapper per più versioni di una libreria di tipi. Per istruzioni, vedere Procedura: Creare wrapper per più versioni delle librerie di tipi.
Esempio
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. Omettendo un nome di spazio dei nomi specifico, questo esempio produce lo spazio dei nomi predefinito, LibUtil.
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /out:LibUtil.dll
Per un nome più descrittivo (seguendo la convenzione di denominazione VendorName.LibraryName), l'esempio seguente sostituisce il nome predefinito del file di assembly e il nome predefinito dello spazio dei nomi.
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. Lo spazio dei nomi, CompanyB.MyLib, sovrascrive il nome dello spazio dei nomi predefinito.
tlbimp MyLib.tlb /primary /keyfile:CompanyB.snk /namespace:CompanyB.MyLib /reference:CompanyA.LibUtil.dll /out:CompanyB.MyLib.dll