Assembly misti (nativi e gestiti)
Aggiornamento: novembre 2007
Gli assembly misti possono contenere sia istruzioni macchina non gestite che istruzioni MSIL. Ciò ne consente la chiamata da e verso componenti .NET, garantendo al tempo stesso la compatibilità con componenti interamente non gestiti. Grazie agli assembly misti, gli sviluppatori possono creare applicazioni utilizzando una combinazione di funzionalità gestite e non gestite. Gli assembly misti rappresentano pertanto la soluzione ideale per la migrazione delle applicazioni Visual C++ esistenti alla piattaforma .NET.
È ad esempio possibile eseguire la migrazione alla piattaforma .NET di un'applicazione esistente interamente costituita da funzioni non gestite, ricompilando semplicemente un modulo con l'opzione /clr del compilatore. Questo modulo sarà quindi in grado di utilizzare funzionalità .NET, mantenendo tuttavia la compatibilità con il resto dell'applicazione. Un'applicazione può così essere convertita alla piattaforma .NET in modo graduale. È inoltre possibile scegliere tra la compilazione gestita e non gestita in base a ogni singola funzione all'interno dello stesso file (vedere managed, unmanaged).
Visual C++ 2005 supporta la generazione di tre tipi distinti di assembly gestiti: misti, pure e verificabili. Il secondo e il terzo tipo sono illustrati in Codice pure e verificabile.
In questa sezione
Procedura: eseguire la migrazione a /clr
Descrive i passaggi consigliati per l'introduzione o l'aggiornamento di funzionalità .NET nell'applicazione.Procedura: compilare codice MFC e ATL con /clr
Illustra come compilare programmi MFC e ATL esistenti per Common Language Runtime.Inizializzazione di assembly misti
Descrive il problema del "blocco del caricatore" e le relative soluzioni.Procedura: rimuovere la dipendenza da _vcclrit.h
Descrive come annullare la soluzione del blocco del caricatore consigliata per Visual C++ 2003.Supporto delle librerie per assembly misti
Illustra come utilizzare librerie native nelle compilazioni /clr.Considerazioni sulle prestazioni per l'interoperabilità (C++)
Descrive le implicazioni sulle prestazioni degli assembly misti e del marshalling dei dati.Domini applicazione e Visual C++
Illustra il supporto Visual C++ per i domini applicazione.Doppio thunk (C++)
Illustra le implicazioni sulle prestazioni di un punto di ingresso nativo per una funzione gestita.Evitare eccezioni all'arresto di CLR quando si utilizzano oggetti COM compilati con /clr
Illustra 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 tramite Visual C++ rimuovendo la dipendenza da msvcm90.dll.
Per ulteriori informazioni sulle linee guida per il codice per gli assembly misti, vedere l'articolo "An Overview of Managed/Unmanaged Code Interoperability" in MSDN all'indirizzo https://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dndotnet/html/manunmancode.asp (informazioni in lingua inglese).