Чистый и проверяемый код (C++/CLI)
Для программирования .NET Visual C++ в Visual Studio 2017 поддерживает создание смешанных сборок с помощью параметра компилятора /clr (компиляция среды CLR). Параметры /clr:pure и clr:safe устарели в Visual Studio 2015 и не поддерживаются в Visual Studio 2017. Если код должен быть безопасным или проверяемым, рекомендуется перенести его в C#.
Смешанный (/clr)
Смешанные сборки (скомпилированные с /clr), содержат как неуправляемые, так и управляемые части, что позволяет им использовать функции .NET, но по-прежнему содержат машинный код. Это позволяет приложениям и компонентам обновляться для использования функций .NET, не требуя перезаписи всего проекта. Использование Visual C++ для смешивания управляемого и машинного кода в этом режиме называется взаимодействием C++. Дополнительные сведения см. в статьях о смешанных сборках (собственных и управляемых) сборках и взаимодействии с .NET.
Вызовы, сделанные из управляемых сборок в собственные библиотеки DLL через P/Invoke, компилируются, но могут завершиться сбоем во время выполнения в зависимости от параметров безопасности.
Существует один сценарий программирования, который будет передавать компилятор, но это приведет к неподверяемой сборке: вызов виртуальной функции через экземпляр объекта с помощью оператора разрешения области. Например: MyObj -> A::VirtualFunction();
.