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.
L'interoperabilità consente di mantenere e sfruttare gli investimenti esistenti nel codice non gestito. Il codice eseguito sotto il controllo di Common Language Runtime (CLR) è codice gestito e il codice eseguito all'esterno di CLR non è codice gestito. I componenti COM, COM+, C++, i componenti ActiveX e l'API Di Microsoft Windows sono esempi di codice non gestito.
.NET consente l'interoperabilità con codice non gestito tramite i servizi platform invoke, lo spazio dei nomi, l'interoperabilità System.Runtime.InteropServices C++ e l'interoperabilità COM (interoperabilità COM).
Platform Invoke
Platform invoke è un servizio che consente al codice gestito di chiamare funzioni non gestite implementate nelle librerie di collegamento dinamico (DLL), ad esempio l'API Microsoft Windows. Identifica e richiama una funzione esportata e gestisce i suoi argomenti (numeri interi, stringhe, matrici, strutture e così via) oltre il confine di interoperabilità secondo necessità.
Per altre informazioni, vedere Utilizzo di funzioni DLL non gestite e Come usare platform invoke per riprodurre un file WAV.
Annotazioni
Common Language Runtime (CLR) gestisce l'accesso alle risorse di sistema. La chiamata di codice non gestito all'esterno di CLR ignora questo meccanismo di sicurezza e pertanto presenta un rischio per la sicurezza. Ad esempio, il codice non gestito potrebbe chiamare direttamente le risorse nel codice non gestito, ignorando i meccanismi di sicurezza CLR. Per altre informazioni, vedere Sicurezza in .NET.
Interoperabilità C++
È possibile usare l'interoperabilità C++, nota anche come It Just Works (IJW), per eseguire il wrapping di una classe C++ nativa. L'interoperabilità C++ consente al codice creato in C# o in un altro linguaggio .NET di accedervi. Scrivere codice C++ per eseguire il wrapping di una DLL nativa o di un componente COM. A differenza di altri linguaggi .NET, Visual C++ supporta l'interoperabilità che consente il codice gestito e non gestito nella stessa applicazione e anche nello stesso file. Si compila quindi il codice C++ usando l'opzione del compilatore /clr per produrre un assembly gestito. Infine, si aggiunge un riferimento all'assembly nel progetto C# e si usano gli oggetti di cui è stato eseguito il wrapping esattamente come si userebbero altre classi gestite.
Esposizione di componenti COM a C#
È possibile utilizzare un componente COM da un progetto C#. In generale, i passaggi sono i seguenti:
- Individuare un componente COM da usare e registrarlo. Usare regsvr32.exe per registrare o annullare la registrazione di una DLL COM.
- Aggiungere al progetto un riferimento alla libreria dei tipi o al componente COM. Quando si aggiunge il riferimento, Visual Studio usa il Tlbimp.exe (Importatore libreria di tipi), che accetta una libreria dei tipi come input per restituire un assembly di interoperabilità .NET. L'assembly, denominato anche wrapper chiamabile in fase di esecuzione (RCW), contiene classi gestite e interfacce che eseguono il wrapping delle classi e delle interfacce COM presenti nella libreria dei tipi. Visual Studio aggiunge al progetto un riferimento all'assembly generato.
- Creare un'istanza di una classe definita nell'RCW. La creazione di un'istanza di tale classe crea un'istanza dell'oggetto COM.
- Usare l'oggetto esattamente come si usano altri oggetti gestiti. Quando l'oggetto viene recuperato da Garbage Collection, l'istanza dell'oggetto COM viene rilasciata anche dalla memoria.
Per altre informazioni, vedere Esposizione di componenti COM a .NET Framework.
Esposizione di C# a COM
I client COM possono utilizzare tipi C# esposti correttamente. I passaggi di base per esporre i tipi C# sono i seguenti:
- Aggiungere attributi di interoperabilità nel progetto C#. È possibile rendere visibile un assembly COM modificando le proprietà del progetto C#. Per ulteriori informazioni, vedere Finestra di dialogo Informazioni sull'assembly.
- Generare una libreria dei tipi COM e registrarla per l'utilizzo COM.
È possibile modificare le proprietà del progetto C# per registrare automaticamente l'assembly C# per l'interoperabilità COM. Visual Studio usa il Regasm.exe (Strumento di registrazione assembly) usando l'opzione della
/tlb
riga di comando, che accetta un assembly gestito come input, per generare una libreria dei tipi. Questa libreria dei tipi descrive ipublic
tipi nell'assembly e aggiunge voci del Registro di sistema in modo che i client COM possano creare classi gestite.
Per altre informazioni, vedere Esposizione di componenti .NET Framework a COM e classe COM di esempio.