/clr (Common Language Runtime)

 

Publikováno: červenec 2016

Nejnovější dokumentaci k sadě Visual Studio 2017 najdete tady.

Umožňuje aplikací a komponent pomocí funkce z modul common language runtime (CLR).

/clr[:options]  

options
Jeden nebo více z následujících přepínačů, oddělených čárkami.

/ CLR
Vytvoří metadat pro aplikaci. Metadata mohou využívat jiné aplikace CLR a umožňuje aplikaci spotřebovávat typy a dat v metadatech ostatní součásti CLR.

Další informace naleznete v tématu

Smíšená (nativní a spravovaná) sestavení a

Postupy: Migrace do prostředí /clr.

/ CLR: pure
Vytvoří Intermediate Language Microsoft (MSIL)-pouze výstupního souboru, který nemá žádné nativní spustitelný kód. Však může obsahovat nativní typy zkompilována do jazyka MSIL.

Další informace naleznete v tématu Čistý a ověřitelný kód.

/ CLR: pure je zastaralý. Tuto možnost nepodporují budoucí verzi kompilátoru. Doporučujeme vám, že port kód, který musí být čistá MSIL do jazyka C#.

/ CLR: safe
Vytváří MSIL pouze (žádné nativní spustitelný kód), ověřitelné výstupní soubor./clr: safe umožňují diagnostiku ověření (Nástroj PEVerify (Peverify.exe)).

Další informace naleznete v tématu NIB: zápis prokazatelně typově bezpečný kód.

/ CLR: safe je zastaralý. Tuto možnost nepodporují budoucí verzi kompilátoru. Doporučujeme vám, že port kód, který musí být čistá, ověřitelné MSIL do jazyka C#.

/CLR:noAssembly
Určuje, že manifest sestavení by neměl být vložen do výstupního souboru. Ve výchozím nastavení noAssembly možnost není platný.

NoAssembly parametr se již nepoužívá. Použití /LN (Vytvořit modul MSIL) místo.

Spravované program, který nemá metadata sestavení v manifestu je označován jako modulu.NoAssembly možnost lze použít pouze k vytvoření modulu. Pokud kompilujete pomocí /c a /clr:noAssembly, zadejte /NOASSEMBLY možnost ve fázi linker vytvořit modul.

Před Visual C++ 2005 /clr:noAssembly požadované /LD./LD je nyní zahrnuta, když zadáte /clr:noAssembly.

/ CLR: initialAppDomain
Umožňuje Visual C++ spuštění aplikace v modulu CLR verze 1. Pokud používáte initialAppDomain, pak mohou se zobrazit některé z problémů, které jsou popsány v Chyba: výjimka AppDomainUnloaded při použití spravovaných rozšíření pro Visual C++ součásti na webu podpory společnosti Microsoft.

Aplikace, která je kompilován s použitím initialAppDomain by se nemělo používat aplikaci, která používá technologie ASP.NET, protože není podporován v 1 verzi modulu CLR.

/CLR:nostdlib
Dává pokyn kompilátoru ignorovat výchozí adresář \clr. Chcete-li zahrnout více verzí knihovny DLL, jako například System.dll, kompilátor vytvoří chyby. Tato možnost vám umožní určit konkrétní framework pro použití během kompilace.

Spravovaný kód je kód, který můžete prozkoumat a spravovány modulem CLR. Spravovaný kód může přistupovat spravované objekty. Další informace naleznete v tématu /clr – omezení.

Informace o tom, jak vyvíjet aplikace, které definice a používání spravovaných typů naleznete v tématu Component Extensions for Runtime Platforms.

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

Chcete-li povolit ladění na spravované aplikace, najdete v části /ASSEMBLYDEBUG (Přidat atribut DebuggableAttribute).

Pouze typy CLR bude vytvořena v haldě uvolňování paměti. Další informace naleznete v tématu Classes and Structs. Pro kompilaci funkce do nativního kódu, použijte unmanaged pragma. Další informace naleznete v tématu managed, unmanaged.

Ve výchozím nastavení /CLR není platný. Když /CLR je ve skutečnosti /MD platí také. Další informace naleznete v tématu /MD, /MT, /LD (Použít běhovou knihovnu)./MD zajistí, že jsou vybrány dynamicky propojené s více vlákny verzích rutiny modulu runtime ze souborů standardní hlaviček (.h). Multithreading je vyžadován pro spravované programování, protože CLR systému uvolňování paměti spuštěna finalizační metody v pomocná vlákna.

Pokud kompilujete pomocí /c, můžete zadat typ CLR (IJW bezpečných nebo čisté) výsledný výstupní soubor s /CLRIMAGETYPE.

/CLR znamená /EHa, a žádný jiný /EH možnosti jsou podporovány pro /CLR. Další informace naleznete v tématu /EH (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 zkompilovány pomocí stejné možnosti kompilátoru knihovna run-time (/MD nebo /LD).

Použití /ASSEMBLYRESOURCE propojovacího vložit prostředek v sestavení./Delaysign, /keycontainer, a /keyfile možnosti linkeru také umožňují přizpůsobit způsob vytvoření sestavení.

Když /CLR se používá _MANAGED je definován symbol musí být 1. Další informace naleznete v tématu Předdefinovaná makra.

Globální proměnné v souboru nativní objektu jsou inicializovány první (během DllMain, pokud je spustitelný soubor knihovny DLL) a globální proměnné v části spravované jsou inicializovány (dříve, než je spustit spravovaný kód).#pragmainit_seg – se týká pouze pořadí inicializace v kategoriích spravovaná a nespravovaná.

Kompilace s použitím /clr: safe je analogická kompilace s použitím /platform:anycpu v jazycích, například C#.

Čisté bitové kopii používá verzi CLR knihovně C Runtime (CRT). CRT však není ověřitelné, a proto nemůžete používat CRT, pokud kompilujete pomocí /clr: safe. Další informace naleznete v tématu Funkce knihovny CRT.

Nativní kód, který nelze vložit do bitové kopie čistě příklady vložené sestavení setjmp, a longjmp.

Každý vstupní bod čistě nebo bezpečné bitové kopie je spravován. Pokud kompilujete pomocí /CLR, je nativní vstupní bod. Další informace naleznete v tématu __clrcall.

Pokud kompilujete pomocí /clr: safe, ve výchozím nastavení, proměnné jsou appdomain a nelze na proces. Pro /clr: pure, i když appdomain je ve výchozím nastavení, můžete použít proces proměnné.

Při spuštění souboru .exe 32 bitů, které byl zkompilován pomocí /CLR nebo /clr: pure na 64bitový operační systém, bude aplikace spuštěna WOW64, která umožňuje 32bitová aplikace spustit na 32bitovou verzi modulu CLR na 64bitový operační systém. Ve výchozím nastavení souboru .exe, který je kompilován s použitím /clr: safe se spustí na 64bitovém modulu CLR na počítači, který je spuštěn operační systém 64-bit. (Na 32bitovou verzi operačního systému, by byl spuštěn stejný soubor .exe na 32bitovou verzi modulu CLR.) Bezpečné aplikace může však zavést 32bitovou součást. V takovém případě bitovou kopii bezpečné spuštěna pod podpory 64bitového operačního systému se nezdaří, když načte 32bitové aplikace (BadFormatException). Chcete-li zajistit, bitové kopie bezpečné pokračování spustit, když načte kopie 32bitového na 64bitový operační systém, je nutné použít /CLRIMAGETYPE změnit metadata (.corflags) a označte ji spustit WOW64. Následující příkazový řádek je příklad. (Nahraďte vlastní symbol položka.)

cl/CLR: safe t.cpp/Link /clrimagetype: čistá /entry:?main@@$$HYMHXZ /subsystem:console

Informace o tom, jak získat upravený název naleznete v tématu Dekorované názvy. Další informace o 64bitovém programování naleznete v tématu Konfigurace programů pro 64bitové prostředí. Informace o použití čistý kód CLR naleznete v tématu Postupy: Přechod na /clr:pure a Čistý a ověřitelný kód.

Nepojmenované třídy se objeví v metadatech s názvem následujícím způsobem: $UnnamedClass$crc z aktuální názvu souboru$index$, kde index je sekvenční počet nepojmenované třídy v kompilace. Například následující příklad kódu vygeneruje nepojmenované třídy v metadatech.

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

Použijte ildasm.exe pro metadata.

Visual C++ již nepodporuje /clr:oldsyntax možnost. Tato možnost byla zrušena v sadě Visual Studio 2005. Podporované syntaxe pro vytvoření spravovaného kódu v jazyce C++ je C + +/ CLI. Další informace naleznete v tématu Component Extensions for Runtime Platforms.

Pokud máte kód, který používá spravovaných rozšíření jazyka C++, doporučujeme, abyste portu jej na použití C + +/ CLI syntaxe. Informace o tom, jak přenesení kódu naleznete v tématu Základy migrace v jazyku C++/CLI.

Nastavení této možnosti kompilátoru v sadě Visual Studio

  1. V Průzkumníku řešení, klikněte pravým tlačítkem na název projektu a potom klikněte na tlačítko Vlastnosti k otevření projektu stránky vlastností dialogové okno.

  2. Vyberte Vlastnosti konfigurace složky.

  3. Na Obecné vlastnost stránky, změňte podpory Common Language Runtime vlastnost.

    System_CAPS_ICON_note.jpg Poznámka

    Když /CLR je povolena v stránky vlastností dialogové okno, vlastnosti – možnost kompilátoru, které nejsou kompatibilní s /CLR také upravena podle potřeby. Například pokud /RTC je nastavena a potom /CLR je povoleno, /RTC bude vypnuto.

    Navíc při ladění /CLR aplikace, nastavit typ ladicího programu vlastnost Mixed nebo pouze spravované. Další informace naleznete v tématu Nastavení projektu pro konfiguraci ladění jazyka C++.

    Informace, jak vytvořit modul, naleznete v části /NOASSEMBLY (Vytvořit modul MSIL).

Programové nastavení tohoto parametru kompilátoru

Možnosti kompilátoru
Nastavení možností kompilátoru

Zobrazit: