Чистый и проверяемый код (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();.

См. также