/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
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
Установите раскрывающийся список "Конфигурация" на все конфигурации и установите раскрывающийся список "Платформа" на все платформы.
Выберите страницу "Свойства>конфигурации" C/C++>General.
Измените свойство поддержки среды CLR. Нажмите ОК, чтобы сохранить внесенные изменения.
Примечание.
В интегрированной среде разработки /clr
Visual Studio параметр компилятора можно задать отдельно на странице "Свойства>конфигурации C/C++>Общие" диалогового окна "Страницы свойств". Однако мы рекомендуем использовать шаблон СРЕДЫ CLR для создания проекта. Он задает все свойства, необходимые для успешного создания компонента СРЕДЫ CLR. Другой способ задать эти свойства — использовать свойство поддержки среды CLR на странице "Дополнительные свойства>конфигурации" диалогового окна "Страницы свойств". Это свойство задает все остальные параметры инструментов, связанных с CLR, одновременно.
Установка данного параметра компилятора программным способом
- См. раздел CompileAsManaged.
См. также
Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC