Assembly misti (nativi e gestiti)

Gli assembly misti sono in grado di contenere sia istruzioni di computer non gestite che istruzioni MSIL. In questo modo è possibile chiamare e chiamare i componenti .NET, mantenendo al tempo stesso la compatibilità con le librerie C++ native. Usando assembly misti, gli sviluppatori possono creare applicazioni usando una combinazione di codice .NET e C++ nativo.

Ad esempio, una libreria esistente costituita interamente da codice C++ nativo può essere portata alla piattaforma .NET ricompilando un solo modulo con l'opzione del compilatore /clr . Questo modulo è quindi in grado di usare le funzionalità .NET, ma rimane compatibile con il resto dell'applicazione. È anche possibile decidere tra compilazione gestita e nativa in base a funzione all'interno dello stesso file (vedere managed, unmanaged).

Visual C++ supporta solo la generazione di assembly gestiti misti usando l'opzione del compilatore /clr . Le opzioni del compilatore /clr:pure e /clr:safe sono deprecate in Visual Studio 2015 e non supportate in Visual Studio 2017. Se sono necessari assembly gestiti puri o verificabili, è consigliabile crearli usando C#.

Le versioni precedenti del set di strumenti del compilatore Microsoft C++ supportano la generazione di tre tipi distinti di assembly gestiti: misto, puro e verificabile. Gli ultimi due sono descritti in Codice puro e verificabile (C++/CLI).

Contenuto della sezione

Procedura: Eseguire la migrazione a /clr
Descrive i passaggi consigliati per l'introduzione o l'aggiornamento delle funzionalità .NET nell'applicazione.

Procedura: Compilare codice MFC e ATL usando /clr
Viene illustrato come compilare programmi MFC e ATL esistenti per definire come destinazione Common Language Runtime.

Inizializzazione di assembly misti
Descrive il problema e le soluzioni del blocco del caricatore.

Supporto delle librerie per assembly misti
Viene illustrato come usare librerie native nelle compilazioni /clr .

Considerazioni sulle prestazioni
Vengono descritte le implicazioni sulle prestazioni degli assembly misti e del marshalling dei dati.

Domini applicazione e Visual C++
Viene illustrato il supporto di Visual C++ per i domini applicazione.

Double Thunking
Vengono illustrate le implicazioni sulle prestazioni di un punto di ingresso nativo per una funzione gestita.

Evitare eccezioni all'arresto clr durante l'utilizzo di oggetti COM compilati con /clr
Viene illustrato come garantire l'arresto corretto di un'applicazione gestita che utilizza un oggetto COM compilato con /clr.

Procedura: Creare un'applicazione parzialmente attendibile rimuovendo la dipendenza dalla DLL della libreria CRT
Viene illustrato come creare un'applicazione Common Language Runtime parzialmente attendibile usando Visual C++ rimuovendo la dipendenza da msvcm90.dll.

Per altre informazioni sulle linee guida per la codifica per assembly misti, vedere Panoramica dell'interoperabilità del codice gestito/non gestito.

Vedi anche