/CLRUNMANAGEDCODECHECK (Remove SuppressUnmanagedCodeSecurityAttribute)

/CLRUNMANAGEDCODECHECK указывает, что компоновщик не применяется SuppressUnmanagedCodeSecurityAttribute к вызовам, созданным PInvoke компоновщиком из управляемого кода, в собственные библиотеки DLL.

Синтаксис

/CLRUNMANAGEDCODECHECK
/CLRUNMANAGEDCODECHECK:NO

Замечания

По умолчанию компоновщик применяет SuppressUnmanagedCodeSecurityAttribute атрибут к вызовам, созданным компоновщиком PInvoke . При /CLRUNMANAGEDCODECHECK действии SuppressUnmanagedCodeSecurityAttribute удаляется. Чтобы явно применить SuppressUnmanagedCodeSecurityAttribute атрибут к вызовам, созданным PInvoke компоновщиком, можно использовать /CLRUNMANAGEDCODECHECK:NO.

Компоновщик добавляет атрибут только в объекты, скомпилированные с помощью /clr или /clr:pure. /clr:pure Однако параметр компилятора устарел в Visual Studio 2015 и не поддерживается в Visual Studio 2017 и более поздних версиях.

PInvoke Вызов создается компоновщиком, когда компоновщик не может найти управляемый символ для удовлетворения ссылки от управляемого вызывающего объекта, но может найти собственный символ для удовлетворения этой ссылки. Дополнительные сведения о PInvoke см. в статье Вызов встроенных функций из управляемого кода.

Если вы используете AllowPartiallyTrustedCallersAttribute в коде, необходимо явно задать /CLRUNMANAGEDCODECHECK для удаления атрибута SuppressUnmanagedCodeSecurity . Это потенциальная уязвимость безопасности, если изображение содержит как SuppressUnmanagedCodeSecurity атрибуты, так и AllowPartiallyTrustedCallers атрибуты.

Дополнительные сведения о последствиях использования SuppressUnmanagedCodeSecurityAttributeсм. в руководстве по безопасному коду для неуправляемого кода.

Задание данного параметра компоновщика в среде разработки Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Set компилятора и свойств сборки.

  2. Выберите страницу свойств>компоновщика>конфигурации Advanced.

  3. Измените значение свойства Проверка CLR на неуправляемый код.

Задание данного параметра компоновщика программным способом

  1. См. раздел CLRUnmanagedCodeCheck.

См. также

Справочник по компоновщику MSVC
Параметры компоновщика MSVC