Možnosti kompilátoru jazyka C#, které řídí výstup kompilátoru

Následující možnosti řídí generování výstupu kompilátoru.

MSBuild csc.exe Popis
DocumentationFile -doc: Vygenerujte soubor dokumentace XML z /// komentářů.
OutputAssembly -out: Zadejte výstupní soubor sestavení.
PlatformTarget -platform: Zadejte procesor cílové platformy.
ProduceReferenceAssembly -refout: Vygenerujte referenční sestavení.
TargetType -target: Zadejte typ výstupního sestavení.

DocumentationFile

Možnost DocumentationFile umožňuje umístit komentáře dokumentace do souboru XML. Další informace o dokumentování kódu najdete v tématu Doporučené značky pro komentáře dokumentace. Hodnota určuje cestu k výstupnímu souboru XML. Soubor XML obsahuje komentáře v souborech zdrojového kódu kompilace.

<DocumentationFile>path/to/file.xml</DocumentationFile>

Soubor zdrojového kódu, který obsahuje příkazy main nebo nejvyšší úrovně, je výstupem nejprve do XML. Vygenerovaný soubor .xml budete často chtít používat s IntelliSense. Název souboru .xml musí být stejný jako název sestavení. Soubor .xml musí být ve stejném adresáři jako sestavení. Při odkazování na sestavení v projektu sady Visual Studio se také najde soubor .xml . Další informace o generování komentářů ke kódu naleznete v tématu Zadávání komentářů ke kódu. Pokud ho zkompilujete <TargetType:Module>, file bude obsahovat <assembly> a </assembly> značky určující název souboru obsahujícího manifest sestavení pro výstupní soubor. Příklady najdete v tématu Použití funkcí dokumentace XML.

Poznámka:

Možnost DocumentationFile se vztahuje na všechny soubory v projektu. Pokud chcete zakázat upozornění související s komentáři dokumentace pro konkrétní soubor nebo část kódu, použijte #pragma upozornění.

Tuto možnost lze použít v libovolném projektu ve stylu sady .NET SDK. Další informace naleznete v části DocumentationFile vlastnost.

OutputAssembly

Možnost OutputAssembly určuje název výstupního souboru. Výstupní cesta určuje složku, do které je umístěn výstup kompilátoru.

<OutputAssembly>folder</OutputAssembly>

Zadejte úplný název a příponu souboru, který chcete vytvořit. Pokud nezadáte název výstupního souboru, nástroj MSBuild použije název projektu k zadání názvu výstupního sestavení. Staré projekty stylu používají následující pravidla:

  • .exe převezme jeho název ze souboru zdrojového kódu, který obsahuje metodu Main nebo příkazy nejvyšší úrovně.
  • .dll nebo .netmodule převezme jeho název z prvního souboru zdrojového kódu.

Všechny moduly vytvořené jako součást kompilace se stanou soubory přidružené k libovolnému sestavení vytvořenému také v kompilaci. Pomocí ildasm.exe zobrazte manifest sestavení a zobrazte přidružené soubory.

Možnost outputAssembly kompilátoru je vyžadována, aby exe byl cílem přátelského sestavení.

PlatformTarget

Určuje, která verze modulu CLR může spustit sestavení.

<PlatformTarget>anycpu</PlatformTarget>
  • anycpu (výchozí) zkompiluje sestavení tak, aby bylo spuštěno na libovolné platformě. Aplikace běží jako 64bitový proces, kdykoli je to možné, a vrátí se zpět na 32bitovou verzi, pokud je k dispozici pouze tento režim.
  • anycpu32bitpreferred zkompiluje sestavení tak, aby bylo spuštěno na libovolné platformě. Vaše aplikace běží v 32bitovém režimu v systémech, které podporují 64bitové i 32bitové aplikace. Tuto možnost můžete zadat pouze pro projekty, které cílí na rozhraní .NET Framework 4.5 nebo novější.
  • ARM zkompiluje sestavení tak, aby běželo na počítači s procesorem ARM (Advanced RISC Machine).
  • ARM64 zkompiluje sestavení tak, aby běželo 64bitovým CLR na počítači s procesorem ARM (Advanced RISC Machine), který podporuje instrukční sadu A64.
  • x64 zkompiluje sestavení tak, aby bylo spuštěno 64bitovým CLR v počítači, který podporuje instrukční sadu AMD64 nebo EM64T.
  • x86 zkompiluje sestavení tak, aby bylo spuštěno 32bitovým clr kompatibilním s x86.
  • Itanium zkompiluje sestavení tak, aby bylo spuštěno 64bitovým CLR v počítači s procesorem Itanium.

V 64bitovém operačním systému Windows:

  • Sestavení zkompilovaná pomocí x86 se spouští v 32bitovém modulu CLR spuštěném pod WOW64.
  • Knihovna DLL zkompilovaná s libovolným procesorem se spustí ve stejném CLR jako proces, do kterého je načten.
  • Spustitelné soubory kompilované pomocí anycpu se spouští v 64bitovém modulu CLR.
  • Spustitelné soubory zkompilované pomocí příkazu anycpu32bitpreferred se spustí na 32bitovém modulu CLR.

Nastavení anycpu32bitpreferred je platné pouze pro spustitelné soubory (.EXE) a vyžaduje rozhraní .NET Framework 4.5 nebo novější. Další informace o vývoji aplikace pro spuštění v 64bitovém operačním systému Windows naleznete v 64bitových aplikacích.

Nastavte možnost PlatformTarget ze stránky Vlastností sestavení pro váš projekt v sadě Visual Studio.

Chování libovolného procesoru má některé další nuance v .NET Core a .NET 5 a novějších verzích. Když nastavíte libovolný procesor, publikujte aplikaci a spusťte ji pomocí x86 dotnet.exe nebo x64 dotnet.exe. V případě samostatných aplikací dotnet publish tento krok zabalí spustitelný soubor pro nakonfigurovaný identifikátor RID.

ProduceReferenceAssembly

Možnost ProduceReferenceAssembly řídí, zda kompilátor vytváří referenční sestavení.

<ProduceReferenceAssembly>true</ProduceReferenceAssembly>

Referenční sestavení jsou speciálním typem sestavení, které obsahuje pouze minimální množství metadat potřebných k reprezentaci veřejného rozhraní API knihovny. Zahrnují deklarace pro všechny členy, které jsou významné při odkazování na sestavení v nástrojích sestavení. Referenční sestavení vylučují všechny implementace členů a deklarace soukromých členů. Tito členové nemají pozorovatelný dopad na kontrakt rozhraní API. Další informace naleznete v tématu Referenční sestavení v příručce .NET.

Možnosti ProduceReferenceAssembly a ProduceOnlyReferenceAssembly se vzájemně vylučují.

Obecně nemusíte pracovat přímo s referenčními soubory sestavení. Ve výchozím nastavení jsou referenční sestavení generována v ref podsložce zprostředkující cesty (tj. obj/ref/). Pokud je chcete vygenerovat v rámci výstupního adresáře (tj. bin/ref/) nastaveného ProduceReferenceAssemblyInOutDir v true projektu.

.NET SDK 6.0.200 provedl změnu, která ve výchozím nastavení přesunula referenční sestavení z výstupního adresáře do zprostředkujícího adresáře.

TargetType

Možnost kompilátoru TargetType lze zadat v jednom z následujících formulářů:

  • knihovna: vytvoření knihovny kódu. knihovna je výchozí hodnota.
  • exe: vytvoření .exe souboru.
  • modul pro vytvoření modulu.
  • winexe k vytvoření programu pro Windows.
  • winmdobj pro vytvoření přechodného souboru .winmdobj .
  • appcontainerexe pro vytvoření souboru .exe pro aplikace pro Windows 8.x Store.

Poznámka:

Pro cíle rozhraní .NET Framework, pokud nezadáte modul, tato možnost způsobí umístění manifestu sestavení rozhraní .NET Framework do výstupního souboru. Další informace naleznete v tématu Sestavení v .NET a běžné atributy.

<TargetType>library</TargetType>

Kompilátor vytvoří na kompilaci pouze jeden manifest sestavení. Informace o všech souborech v kompilaci jsou umístěny v manifestu sestavení. Při vytváření více výstupních souborů na příkazovém řádku lze vytvořit pouze jeden manifest sestavení a musí jít do prvního výstupního souboru zadaného na příkazovém řádku.

Pokud vytváříte sestavení, můžete označit, že veškerý kód nebo jeho část je kompatibilní s atributem CLSCompliantAttribute CLS.

knihovna

Možnost knihovny způsobí, že kompilátor vytvoří dynamickou knihovnu (DLL) místo spustitelného souboru (EXE). Knihovna DLL bude vytvořena s rozšířením .dll . Pokud není zadáno jinak s možností OutputAssembly , název výstupního souboru přebírá název prvního vstupního souboru. Při vytváření souboru Main .dll se nevyžaduje metoda.

exe

Možnost exe způsobí, že kompilátor vytvoří spustitelný soubor (EXE), konzolovou aplikaci. Spustitelný soubor se vytvoří s příponou .exe. Použijte winexe k vytvoření spustitelného souboru programu systému Windows. Pokud není zadáno jinak s možností OutputAssembly , název výstupního souboru přebírá název vstupního souboru, který obsahuje vstupní bod (metoda Main nebo příkazy nejvyšší úrovně). Jeden a pouze jeden vstupní bod je vyžadován v souborech zdrojového kódu, které jsou zkompilovány do .exe souboru. Možnost kompilátoru StartupObject umožňuje určit, která třída obsahuje metodu Main v případech, kdy váš kód má více než jednu třídu s metodou Main .

modul

Tato možnost způsobí, že kompilátor negeneruje manifest sestavení. Ve výchozím nastavení bude výstupní soubor vytvořený kompilací s touto možností mít příponu .netmodule. Soubor, který nemá manifest sestavení, nelze načíst modulem runtime .NET. Takový soubor však lze začlenit do manifestu sestavení sestavení s AddModules. Pokud se v jedné kompilaci vytvoří více než jeden modul, budou interní typy v jednom modulu k dispozici pro ostatní moduly v kompilaci. Pokud kód v jednom modulu odkazuje na internal typy v jiném modulu, musí být oba moduly začleněny do manifestu sestavení s AddModules. Vytvoření modulu není podporováno ve vývojovém prostředí sady Visual Studio.

winexe

Možnost winexe způsobí, že kompilátor vytvoří spustitelný soubor (EXE), program Systému Windows. Spustitelný soubor se vytvoří s příponou .exe. Program windows je program, který poskytuje uživatelské rozhraní z knihovny .NET nebo s rozhraními API systému Windows. Pomocí exe vytvořte konzolovou aplikaci. Pokud není zadáno jinak s outputAssembly možnost, název výstupního souboru přebírá název vstupního souboru, který obsahuje metodu Main . V souborech zdrojového kódu, které jsou zkompilovány do souboru .exe, je vyžadována pouze jedna Main metoda. Možnost StartupObject umožňuje určit, která třída obsahuje metodu Main v případech, kdy má váš kód více než jednu třídu s metodou Main .

winmdobj

Pokud použijete možnost winmdobj, kompilátor vytvoří zprostředkující soubor .winmdobj, který můžete převést na binární soubor prostředí Windows Runtime (.winmd). Soubor .winmd pak může využívat javascriptové a C++ programy kromě spravovaných jazykových programů.

Signály nastavení winmdobj kompilátoru, který vyžaduje zprostředkující modul. Soubor .winmdobj pak můžete generovat pomocí WinMDExp nástroje pro export a vytvořit soubor metadat systému Windows (.winmd). Soubor .winmd obsahuje kód z původní knihovny i metadata WinMD, která používají JavaScript nebo C++ a prostředí Windows Runtime. Výstup souboru kompilovaného pomocí možnosti kompilátoru winmdobj se používá pouze jako vstup pro nástroj pro export WimMDExp. Samotný soubor .winmdobj není přímo odkazován. Pokud nepoužíváte možnost OutputAssembly , název výstupního souboru přebírá název prvního vstupního souboru. Metoda Main není nutná.

appcontainerexe

Pokud použijete možnost kompilátoru appcontainerexe , kompilátor vytvoří spustitelný soubor windows (.exe), který se musí spustit v kontejneru aplikace. Tato možnost je ekvivalentní parametru -target:winexe , ale je určená pro aplikace pro Windows 8.x Store.

Pokud chcete, aby aplikace běžela v kontejneru aplikace, nastaví tato možnost bit v souboru Portable Executable (PE). Pokud je tato bit nastavena, dojde k chybě, pokud se metoda CreateProcess pokusí spustit spustitelný soubor mimo kontejner aplikace. Pokud nepoužíváte možnost OutputAssembly , název výstupního souboru přebírá název vstupního souboru, který obsahuje metodu Main .