/clr (Компиляция среды CLR)

Позволяет приложениям и компонентам использовать функции из среды CLR и включает компиляцию C++/CLI.

Синтаксис

/clr[:параметры]

Аргументы

options
Один или несколько следующих аргументов, разделенных запятыми.

  • нет

    Без параметров /clr создает метаданные для компонента. Метаданные могут использоваться другими приложениями СРЕДЫ CLR и позволяют компоненту использовать типы и данные в метаданных других компонентов СРЕДЫ CLR. Дополнительные сведения см. в статье Смешанные (собственные и управляемые) сборки.

  • netcore

    Доступно начиная с Visual Studio 2019 версии 16.4, /clr:netcore создает метаданные и код для компонента с помощью последней кроссплатформенной платформы .NET Framework, также известной как .NET Core. Метаданные можно использовать другими приложениями .NET Core. И этот параметр позволяет компоненту использовать типы и данные в метаданных других компонентов .NET Core.

  • nostdlib

    Указывает компилятору игнорировать каталог по умолчанию \clr . Компилятор создает ошибки при включении нескольких версий библиотеки DLL, таких как System.dll. Этот параметр позволяет указать конкретную платформу, используемую во время компиляции.

  • pure

    /clr:pure не рекомендуется. Этот параметр удален в Visual Studio 2017 и более поздних версий. Мы рекомендуем перенести код, который должен быть чистым кодом MSIL, на C#.

  • safe

    /clr:safe не рекомендуется. Этот параметр удален в Visual Studio 2017 и более поздних версий. Мы рекомендуем перенести код, который должен быть безопасным кодом MSIL, на C#.

  • noAssembly

    /clr:noAssembly не рекомендуется. Вместо этого используйте /LN (создать модуль MSIL).

    Сообщает компилятору не вставлять манифест сборки в выходной файл. По умолчанию параметр noAssembly не действует.

    Управляемая программа, которая не имеет метаданных сборки в манифесте, называется модулем. Этот noAssembly параметр можно использовать только для создания модуля. При компиляции с помощью /c и /clr:noAssemblyзатем укажите /NOASSEMBLY параметр на этапе компоновщика для создания модуля.

    Перед Visual Studio 2005 /clr:noAssembly необходимо /LD. /LD теперь подразумевается при указании /clr:noAssembly.

  • initialAppDomain

    initialAppDomainустарел. Позволяет приложению C++/CLI работать в среде CLR версии 1. Приложение, скомпилированное с помощью initialAppDomain , не должно использоваться приложением, использующим ASP.NET, так как оно не поддерживается в среде CLR версии 1.

Замечания

Управляемый код — это код , который можно проверить и управлять с помощью среды CLR. Управляемый код может обращаться к управляемым объектам. Дополнительные сведения см. в разделе /clr "Ограничения".

Сведения о разработке приложений, которые определяют и используют управляемые типы в C++, см. в разделе "Расширения компонентов для платформ среды выполнения".

Приложение, скомпилированное с помощью может /clr содержать или не содержать управляемые данные.

Сведения о включении отладки в управляемом приложении см. в разделе /ASSEMBLYDEBUG (Add DebuggableAttribute).

На куче, собранной мусором, создаются только типы СРЕДЫ CLR. Дополнительные сведения см. в статье Классы и структуры. Для компиляции функции в машинный код используйте директиву unmanaged pragma. Дополнительные сведения см. в разделе managed, unmanaged.

По умолчанию /clr не действует. Когда /clr он действует, /MD также действует. Дополнительные сведения см. в разделе /MD, /LD/MT(Использование библиотеки времени выполнения). /MD гарантирует, что динамически связанные многопоточные версии подпрограмм среды выполнения выбираются из стандартных файлов заголовков. Многопоточность необходима для управляемого программирования, так как сборщик мусора CLR запускает методы завершения во вспомогательном потоке.

При компиляции с помощью /cможно указать тип СРЕДЫ CLR результирующего выходного файла с помощью /CLRIMAGETYPE параметра компоновщика.

/clrозначает/EHa, что для него не поддерживаются /clrдругие /EH варианты. Дополнительные сведения см. в разделе /EH (Модель обработки исключений)

Сведения о том, как определить тип образа СРЕДЫ CLR файла, см. в разделе /CLRHEADER.

Все модули, передаваемые заданному вызову компоновщика, должны быть скомпилированы с помощью одного параметра компилятора библиотеки времени выполнения (/MD или /LD).

/ASSEMBLYRESOURCE Используйте параметр компоновщика для внедрения ресурса в сборку. /DELAYSIGN, /KEYCONTAINERи /KEYFILE параметры компоновщика также позволяют настроить создание сборки.

При /clr использовании _MANAGED символ определяется как 1. Дополнительные сведения см. в разделе "Предопределенные макросы".

Глобальные переменные в собственном файле объектов инициализированы сначала (во время DllMain выполнения исполняемого файла — dll), а затем глобальные переменные в управляемом разделе инициализированы (перед запуском любого управляемого кода). #pragma init_seg влияет только на порядок инициализации в управляемых и неуправляемых категориях.

Метаданные и неименованные классы

Неименованные классы отображаются в метаданных под именами, такими как $UnnamedClass$<crc-of-current-file-name>$<index>$, где <index> последовательное число неименованных классов в компиляции. Например, следующий код создает неименованный класс в метаданных.

// clr_unnamed_class.cpp
// compile by using: /clr /LD
class {} x;

Для просмотра метаданных используйте ildasm.exe.

Установка данного параметра компилятора в среде разработки Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  2. Установите раскрывающийся список "Конфигурация" на все конфигурации и установите раскрывающийся список "Платформа" на все платформы.

  3. Выберите страницу "Свойства>конфигурации" C/C++>General.

  4. Измените свойство поддержки среды CLR. Нажмите ОК, чтобы сохранить внесенные изменения.

Примечание.

В интегрированной среде разработки /clr Visual Studio параметр компилятора можно задать отдельно на странице "Свойства>конфигурации C/C++>Общие" диалогового окна "Страницы свойств". Однако мы рекомендуем использовать шаблон СРЕДЫ CLR для создания проекта. Он задает все свойства, необходимые для успешного создания компонента СРЕДЫ CLR. Другой способ задать эти свойства — использовать свойство поддержки среды CLR на странице "Дополнительные свойства>конфигурации" диалогового окна "Страницы свойств". Это свойство задает все остальные параметры инструментов, связанных с CLR, одновременно.

Установка данного параметра компилятора программным способом

См. также

Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC