Sdílet prostřednictvím


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í.
OutputType -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 <OutputType: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. Tato možnost odpovídá kombinaci OutputPath vlastností a AssemblyName vlastností NÁSTROJE MSBuild, které řídí umístění kompilovaného sestavení a jeho název.

<OutputPath>bin\Debug\</OutputPath>
<AssemblyName>MyApplication</AssemblyName>

Zadejte název a příponu souboru, který chcete vytvořit. Cesta může být relativní nebo absolutní. 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.

OutputType

Možnost kompilátoru OutputType 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.

<OutputType>library</OutputType>

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í 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 .