/clr (Kompilace modulu Common Language Runtime)

Umožňuje aplikacím a komponentám používat funkce z modulu CLR (Common Language Runtime) a umožňuje kompilaci C++/CLI.

Syntax

/clr[ :/clr]

Argumenty

nastavení
Jeden nebo více následujících argumentů oddělených čárkami.

  • žádné

    Bez možností /clr vytvoří metadata pro komponentu. Metadata mohou být spotřebována jinými aplikacemi CLR a umožňují komponentě využívat typy a data v metadatech jiných komponent CLR. Další informace naleznete v tématu smíšená (nativní a spravovaná) sestavení.

  • netcore

    k dispozici počínaje verzí Visual Studio 2019 verze 16,4, /clr:netcore vytvoří metadata a kód pro komponentu pomocí nejnovějšího rozhraní .net framework pro více platforem, označované také jako .net Core. Metadata mohou být spotřebována jinými aplikacemi .NET Core. A možnost umožňuje komponentě využívat typy a data v metadatech jiných komponent .NET Core.

  • nostdlib

    Instruuje kompilátor, aby ignoroval výchozí \clr adresář. Kompilátor vytvoří chyby, pokud zahrnete více verzí knihovny DLL, například System.dll. Tato možnost umožňuje zadat konkrétní rozhraní, které se má použít při kompilaci.

  • pure

    je zastaralá. možnost je odebrána v Visual Studio 2017 a novějším. Doporučujeme, abyste kód portu, který musí být čistě MSIL, do C#.

  • safe

    je zastaralá. možnost je odebrána v Visual Studio 2017 a novějším. Doporučujeme, abyste kód portu, který musí být bezpečného jazyka MSIL, do C#.

  • noAssembly

    je zastaralá. Místo toho použijte (vytvořit modul MSIL) .

    Instruuje kompilátor, aby nevložil manifest sestavení do výstupního souboru. Ve výchozím nastavení tato noAssembly možnost není platná.

    Spravovaný program, který nemá metadata sestavení v manifestu, je označován jako modul. noAssemblyMožnost lze použít pouze k vytvoření modulu. Pokud kompilujete pomocí /c a /clr:noAssembly , pak určete /NOASSEMBLY možnost ve fázi linkeru, aby se vytvořil modul.

    před Visual Studio 2005 se /clr:noAssembly vyžaduje /LD . /LD je nyní předpokládaná při zadání /clr:noAssembly .

  • initialAppDomain

    je zastaralá. Umožňuje aplikaci C++/CLI běžet na verzi 1 modulu CLR. aplikace, která je zkompilována pomocí, initialAppDomain by neměla být používána aplikací, která používá ASP.NET, protože není podporována ve verzi 1 modulu CLR.

Poznámky

Spravovaný kód je kód, který lze kontrolovat a spravovat modulem CLR. Spravovaný kód má přístup ke spravovaným objektům. Další informace najdete v tématu omezení.

Informace o vývoji aplikací, které definují a využívají spravované typy v jazyce C++, naleznete v tématu rozšíření komponent pro platformy běhového prostředí.

Aplikace kompilovaná pomocí /clr může nebo nemusí obsahovat spravovaná data.

Chcete-li povolit ladění na spravované aplikaci, přečtěte si téma (přidání DebuggableAttribute).

V haldě uvolňování paměti jsou vytvořeny pouze typy CLR. Další informace naleznete v tématu třídy a struktury. Chcete-li zkompilovat funkci do nativního kódu, použijte unmanaged direktivu pragma. Další informace naleznete v tématu , unmanaged.

Ve výchozím nastavení /clr neplatí. /clrV důsledku platí, že platí /MD i. Další informace naleznete v tématu , /MT , /LD (použití Run-Time knihovny). /MD zajistí, aby byly v hlavičkovém souboru Standard vybrány dynamicky propojené, vícevláknové verze běhových rutin. Pro spravované programování je vyžadováno multithreading, protože systém uvolňování paměti CLR spouští finalizační metody v pomocném vlákně.

Pokud kompilujete pomocí /c , můžete určit typ CLR výsledného výstupního souboru pomocí /CLRIMAGETYPE Možnosti linkeru.

/clr implikuje /EHa a žádné další /EH Možnosti nejsou podporovány pro /clr . Další informace naleznete v tématu (model zpracování výjimek).

Informace o tom, jak určit typ obrázku CLR souboru, naleznete v tématu /CLRHEADER .

Všechny moduly předané danému vyvolání linkeru musí být kompilovány pomocí možnosti kompilátoru Run-Time Library ( /MD nebo /LD ).

/ASSEMBLYRESOURCEK vložení prostředku do sestavení použijte možnost linkeru. /DELAYSIGN/KEYCONTAINER/KEYFILE Možnosti linkeru, a také umožňují přizpůsobit způsob vytvoření sestavení.

Při /clr použití je _MANAGED symbol definovaný jako 1. Další informace najdete v tématu Předdefinovaná makra.

Globální proměnné v souboru nativního objektu se inicializují jako první ( DllMain v případě, že je spustitelný soubor DLL) a pak se inicializují globální proměnné v spravované části (před spuštěním jakéhokoliv spravovaného kódu). #pragma init_seg ovlivňuje pouze pořadí inicializace ve spravovaných a nespravovaných kategoriích.

Metadata a nepojmenované třídy

Nepojmenované třídy se zobrazí v metadatech pod názvy $UnnamedClass$<crc-of-current-file-name>$<index>$ , například, kde <index> je sekvenční počet nepojmenovaných tříd v kompilaci. Například následující ukázka kódu generuje nepojmenované třídy v metadatech.

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

K zobrazení metadat použijte ildasm.exe.

Nastavení tohoto parametru kompilátoru ve vývojovém prostředí Visual Studio

  1. Otevřete dialogové okno stránky vlastností projektu. Podrobnosti najdete v tématu nastavení kompilátoru C++ a vlastností sestavení v Visual Studio.

  2. Nastavte rozevírací seznam Konfigurace na všechny konfiguracea nastavte rozevírací seznam platforma na všechny platformy.

  3. Vyberte Vlastnosti konfigurace Obecné stránkaC/C++ .

  4. Upravte vlastnost Podpora modulu CLR (Common Language Runtime) . Kliknutím na tlačítko OK uložte změny.

Poznámka

v rozhraní IDE Visual Studio /clr může být možnost kompilátoru nastavena individuálně na stránce /clrv >>>> dialogovém okně stránky vlastností. Doporučujeme však použít šablonu CLR k vytvoření projektu. Nastaví všechny vlastnosti potřebné k úspěšnému vytvoření komponenty CLR. Dalším způsobem, jak tyto vlastnosti nastavit, je použít vlastnost Podpora modulu CLR na stránce Upřesnit Vlastnosti konfigurace dialogového okna stránky vlastností. Tato vlastnost nastaví všechny další možnosti nástroje související s modulem CLR najednou.

Programové nastavení tohoto parametru kompilátoru

Viz také

možnosti kompilátoru MSVC
MSVC syntaxe Command-Line kompilátoru