Código puro y comprobable (C++ / c++ / CLI)Pure and verifiable code (C++/CLI)

Para la programación. NET, Visual C++ en Visual Studio 2017 admite la creación de ensamblados mixtos mediante la /CLR (Common Language Runtime Compilation) opción del compilador.For .NET Programming, Visual C++ in Visual Studio 2017 supports the creation of mixed assemblies by using the /clr (Common Language Runtime Compilation) compiler option. El /CLR: pure y CLR: safe opciones están en desuso en Visual Studio 2015 y no se admite en Visual Studio 2017.The /clr:pure and clr:safe options are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017. Si el código debe ser seguro o que se pueda comprobar, se recomienda trasladarlo a C#.If your code needs to be safe or verifiable, then we recommend that you port it to C#.

Mixta (/clr)Mixed (/clr)

Ensamblados mixtos (compilados con /CLR), contienen no administrados y las partes administradas, lo que permite usar características. NET, pero siguen contengan código nativo.Mixed assemblies (compiled with /clr), contain both unmanaged and managed parts, making it possible for them to use .NET features, but still contain native code. Esto permite actualizar aplicaciones y componentes para utilizar las características de .NET sin tener que volver a escribir el proyecto completo.This allows applications and components to be updated to use .NET features without requiring that the entire project be rewritten. Uso de Visual C++ para mezclar código administrado y nativo de este modo se denomina interoperabilidad de C++.Using Visual C++ to mix managed and native code in this fashion is called C++ Interop. Para obtener más información, consulte ensamblados mixtos (nativos y administrados) y nativo e interoperabilidad de .NET.For more information, see Mixed (Native and Managed) Assemblies and Native and .NET Interoperability.

Las llamadas realizadas desde ensamblados administrados a archivos DLL nativos a través de P/Invoke se compilarán, pero pueden producir un error en tiempo de ejecución según la configuración de seguridad.Calls made from managed assemblies to native DLLs via P/Invoke will compile, but may fail at runtime depending on security settings.

Existe un escenario de codificación que cumplirá los requisitos del compilador, pero que dará como resultado un ensamblado no comprobable: llamar a una función virtual a través de una instancia de objeto mediante un operador de resolución de ámbito.There is one coding scenario that will pass the compiler but that will result in an unverifiable assembly: calling a virtual function through an object instance using the scope resolution operator. Por ejemplo: MyObj -> A::VirtualFunction();.For example: MyObj -> A::VirtualFunction();.

Vea tambiénSee also