Código puro e verificável (C++/CLI)
Para Programação do .NET, o Visual C++ no Visual Studio 2017 dá suporte à criação de assemblies mistos usando a opção do compilador /clr (Common Language Runtime). As opções /clr:pure e /clr:safe foram preteridas no Visual Studio 2015 e incompatíveis com o Visual Studio 2017. Se o código precisar ser seguro ou verificável, recomendamos que você faça a portabilidade dele para C#.
Misto (/clr)
Assemblies mistos (compilados com /clr) contêm partes não gerenciadas e gerenciadas, possibilitando que eles usem recursos do .NET, mas eles ainda contêm código nativo. Isso permite que aplicativos e componentes sejam atualizados para usar recursos do .NET sem exigir que todo o projeto seja reescrito. O uso do Visual C++ para misturar código gerenciado e nativo dessa forma é chamado de Interoperabilidade do C++. Para obter mais informações, confira Assemblies mistos (nativos e gerenciados) e Interoperabilidade nativa e do .NET.
As chamadas feitas de assemblies gerenciados para DLLs nativas por meio de P/Invoke serão compiladas, mas poderão falhar no runtime dependendo das configurações de segurança.
Há um cenário de codificação que passará pelo compilador, mas que resultará em um assembly não verificável: chamar uma função virtual por meio de uma instância de objeto usando o operador de resolução de escopo. Por exemplo: MyObj -> A::VirtualFunction();
.