Možnosti kompilátoru

Tento článek popisuje možnosti příkazového řádku kompilátoru pro kompilátor jazyka F#. dotnet build Příkaz vyvolá kompilátor jazyka F# v souborech projektu jazyka F#. Soubory projektu F# jsou zaznamenány s příponou .fsproj .

Prostředí kompilace je také možné řídit nastavením vlastností projektu. U projektů, které cílí na .NET Core, se vlastnost <OtherFlags>...</OtherFlags>.fsproj"Jiné příznaky" používá k určení dalších možností příkazového řádku.

Možnosti kompilátoru (abecední pořadí)

V následující tabulce jsou uvedeny možnosti kompilátoru uvedené abecedně. Některé z možností kompilátoru jazyka F# jsou podobné možnostem kompilátoru jazyka C#. V takovém případě je k dispozici odkaz na téma možností kompilátoru jazyka C#.

Možnost kompilátoru Popis
--allsigs Vygeneruje nový (nebo znovu vygeneruje existující) soubor podpisu pro každý zdrojový soubor v kompilaci. Další informace o souborech podpisů najdete v tématu Podpisy.
--always-inline Vždy rozbalte vložené funkce, včetně bez optimalizace. Neoptimalizovatelné sestavení F# 11 ve výchozím nastavení dávají přednost volatelným metodám, pokud je to možné pro vložené ladění.
-a filename.fs Vygeneruje knihovnu ze zadaného souboru. Tato možnost je krátká forma --target:library filename.fs.
--baseaddress:address Určuje upřednostňovanou základní adresu, pro kterou se má načíst knihovna DLL.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /baseaddress (možnosti kompilátoru jazyka C#).
--checknulls[+|-] Povolí nulovatelné odkazové typy, přidané v F# 9.
--codepage:id Určuje, kterou znakovou stránku použít během kompilace, pokud požadovaná stránka není aktuální výchozí znakovou stránkou systému.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /kódové stránky (možnosti kompilátoru jazyka C#).
--consolecolors Určuje, že chyby a upozornění používají v konzole barevně kódovaný text.
--crossoptimize[+ or -] Povolí nebo zakáže optimalizace mezi moduly.
--delaysign[+|-] Zpoždění podepíše sestavení pouze pomocí veřejné části klíče silného názvu.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /delaysign (možnosti kompilátoru jazyka C#).a0>
--checked[+|-] Povolí nebo zakáže generování kontrol přetečení.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /checked (možnosti kompilátoru jazyka C#).
--debug[+|-]

-g[+|-]

--debug:[full|pdbonly]

-g: [full|pdbonly]
Povolí nebo zakáže generování informací o ladění nebo určuje typ informací o ladění, které se mají vygenerovat. Výchozí hodnota je full, která umožňuje připojení ke spuštěné aplikaci. Zvolte pdbonly , jestli chcete získat omezené informace o ladění uložené v souboru pdb (databáze programu).

Ekvivalent možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu

/debug (možnosti kompilátoru jazyka C#).
--define:symbol

-d:symbol
Definuje symbol pro použití v podmíněné kompilaci.
--deterministic[+|-] Vytvoří deterministické sestavení (včetně identifikátoru GUID verze modulu a časového razítka). Tuto možnost nelze použít s čísly verzí se zástupnými čísly a podporuje pouze vložené a přenosné typy ladění.
--doc:xmldoc-filename Dává kompilátoru pokyn, aby do zadaného souboru vygeneroval komentáře dokumentace XML. Další informace naleznete v dokumentaci XML.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /doc (možnosti kompilátoru jazyka C#).a0>
--fullpaths Dává kompilátoru pokyn, aby vygeneroval plně kvalifikované cesty.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /fullpaths (možnosti kompilátoru jazyka C#).
--help

-?
Zobrazí informace o využití, včetně stručného popisu všech možností kompilátoru.
--highentropyva[+|-] Povolení nebo zakázání náhodného rozložení adresního prostoru s vysokou entropií (ASLR), funkce rozšířeného zabezpečení Operační systém náhodně načte umístění v paměti, kde se načtou infrastruktura pro aplikace (například zásobník a halda). Pokud tuto možnost povolíte, operační systémy můžou tuto náhodnost použít k použití 64bitového adresního prostoru na 64bitovém počítači.
--keycontainer:key-container-name Určuje kontejner klíče silného názvu.
--keyfile:filename Určuje název souboru veřejného klíče pro podepsání vygenerovaného sestavení.
--lib:folder-name

-I:folder-name
Určuje adresář, který se má vyhledat pro sestavení, na která se odkazuje.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /lib (možnosti kompilátoru jazyka C#).
--linkresource:resource-info Pro propojení zadaného prostředku se sestavením. Formát informací o prostředcích je filename[name[public|private]]

Propojení jednoho prostředku s touto možností je alternativou k vložení celého souboru prostředků s --resource možností.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /linkresource (možnosti kompilátoru jazyka C#).
--mlcompatibility Ignoruje upozornění, která se zobrazí při použití funkcí navržených pro kompatibilitu s jinými verzemi ML.
--noframework Zakáže výchozí odkaz na sestavení .NET Framework.
--nointerfacedata Dává kompilátoru pokyn, aby vynechal prostředek, který obvykle přidává do sestavení, které obsahuje metadata specifická pro F#.
--nologo Při spuštění kompilátoru se nezobrazuje text banneru.
--nooptimizationdata Dává kompilátoru pokyn, aby zahrnoval pouze optimalizaci nezbytnou pro implementaci vložených konstruktorů. Inhibuje inlinování mezi moduly, ale zlepšuje binární kompatibilitu.
--nowin32manifest Dává kompilátoru pokyn, aby vynechal výchozí manifest Win32.
--nowarn:warning-number-list Zakáže konkrétní upozornění uvedená podle čísla. Každé číslo upozornění oddělte čárkou. Číslo upozornění můžete zjistit z výstupu kompilace.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /nowarn (možnosti kompilátoru jazyka C#).
--optimize[+|-] [optimization-option-list]

-O[+|-] [optimization-option-list]
Povolí nebo zakáže optimalizace. Některé možnosti optimalizace je možné zakázat nebo povolit selektivně jejich výpisem. Toto jsou: nojitoptimize, nojittracking, nolocaloptimize, nocrossoptimize, notailcalls.
--out:output-filename

-o:output-filename
Určuje název zkompilovaného sestavení nebo modulu.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /out (možnosti kompilátoru jazyka C#).
--pathmap:path=sourcePath,... Určuje způsob mapování fyzických cest na názvy zdrojových cest výstupem kompilátoru.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace naleznete v tématu /pathmap (možnosti kompilátoru jazyka C#).
--pdb:pdb-filename Pojmenuje výstupní ladicí soubor PDB (programová databáze). Tato možnost platí jenom v případě, že --debug je povolená.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /pdb (možnosti kompilátoru jazyka C#).
--platform:platform-name Určuje, že vygenerovaný kód se bude spouštět pouze na zadané platformě (x86Itanium, nebo x64) nebo, pokud je zvolen název anycpu platformy, určuje, že vygenerovaný kód může běžet na libovolné platformě.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /platform (možnosti kompilátoru jazyka C#).
--preferreduilang:lang Určuje upřednostňovaný název jazykové verze jazyka výstupu (například es-ES, ja-JP).
--quotations-debug Určuje, že by se měly pro výrazy odvozené z uvozovek F# generovat dodatečné informace o ladění a promítat definice. Ladicí informace se přidají do vlastních atributů uzlu stromu výrazů jazyka F#. Viz Citace kódu a Výraz.CustomAttributes.
--reference:assembly-filename

-r:assembly-filename
Zpřístupňuje kód z sestavení F# nebo .NET Framework pro zkompilovaný kód.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace naleznete v tématu /reference (možnosti kompilátoru jazyka C#).
--reflectionfree Vyhne se vygenerovanému strukturálnímu formátování závislému na odrazu. F# 11 může generovat smysluplný výstup záznamu a sjednocení ToString . Viz formátování typu bez odrazu.
--resource:resource-filename Vloží spravovaný soubor prostředků do vygenerovaného sestavení.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /resource (možnosti kompilátoru jazyka C#).a0>
--sig:signature-filename Vygeneruje soubor podpisu na základě vygenerovaného sestavení. Další informace o souborech podpisů najdete v tématu Podpisy.
--simpleresolution Určuje, že odkazy na sestavení by se měly přeložit pomocí pravidel Mono založených na adresáři, nikoli pomocí překladu nástroje MSBuild. Výchozí hodnota je použití překladu MSBuild s výjimkou spuštění v mono.
--standalone Určuje, že se vytvoří sestavení, které obsahuje všechny jeho závislosti, aby se spustilo samostatně, aniž by bylo nutné provádět další sestavení, například knihovnu jazyka F#.
--staticlink:assembly-name Staticky propojuje dané sestavení a všechny odkazované knihovny DLL, které závisí na tomto sestavení. Použijte název sestavení, nikoli název knihovny DLL.
--subsystemversion Určuje verzi subsystému operačního systému, který má být používán vygenerovaným spustitelným souborem. Použijte 6.02 pro Windows 8.1, 6.01 pro Windows 7, 6.00 pro Windows Vista. Tato možnost se vztahuje pouze na spustitelné soubory, nikoli knihovny DLL, a je potřeba ji použít pouze v případě, že vaše aplikace závisí na konkrétních funkcích zabezpečení dostupných jenom na určitých verzích operačního systému. Pokud se tato možnost použije a uživatel se pokusí spustit aplikaci v nižší verzi operačního systému, selže s chybovou zprávou.
--tailcalls[+|-] Povolí nebo zakáže použití koncové instrukce IL, což způsobí opakované použití rámečku zásobníku pro koncové rekurzivní funkce. Tato možnost je ve výchozím nastavení povolena.
--target:[exe|winexe|library|module] filename Určuje typ a název souboru vygenerovaného kompilovaného kódu.
  • exe znamená konzolovou aplikaci.
  • winexe znamená aplikaci systému Windows, která se liší od konzolové aplikace v tom, že nemá definované standardní vstupní a výstupní datové proudy (stdin, stdout a stderr).
  • library je sestavení bez vstupního bodu.
  • module je modul .NET Framework (.netmodule), který lze později kombinovat s jinými moduly do sestavení.
--times Zobrazí informace o časování pro kompilaci.
--utf8output Povolí tisk výstupu kompilátoru v kódování UTF-8.
--warn:warning-level Nastaví úroveň upozornění (0 až 5). Výchozí úroveň je 3. Každé upozornění má úroveň na základě závažnosti. Úroveň 5 poskytuje více, ale méně závažná upozornění než úroveň 1.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /warn (možnosti kompilátoru jazyka C#).
--warnon:warning-number-list Povolte konkrétní upozornění, která můžou být ve výchozím nastavení vypnutá nebo zakázána jinou možností příkazového řádku. Seznam je oddělený čárkami.
--warnaserror[+|-] [warning-number-list] Povolí nebo zakáže možnost hlásit upozornění jako chyby. Můžete zadat konkrétní čísla upozornění, která se mají zakázat nebo povolit. Možnosti později v příkazovém řádku přepíší možnosti dříve v příkazovém řádku. Pokud chcete například zadat upozornění, která nechcete oznamovat jako chyby, zadejte --warnaserror+--warnaserror-:warning-number-list.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /warnaserror (možnosti kompilátoru jazyka C#).
--win32manifest:manifest-filename Přidá do kompilace soubor manifestu Win32. Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /win32manifest (možnosti kompilátoru jazyka C#).
--win32res:resource-filename Přidá do kompilace soubor prostředků Win32.

Tato možnost kompilátoru je ekvivalentní možnosti kompilátoru jazyka C# se stejným názvem. Další informace najdete v tématu /win32res ((C#) Možnosti kompilátoru).

Upozornění výslovného souhlasu

Kompilátor jazyka F# podporuje několik upozornění s výslovným souhlasem:

Počet Shrnutí Úroveň Popis
21 Rekurze kontrolována za běhu 5 Upozornit, když je při rekurzivním použití kontrolována inicializace zvuku za běhu.
22 Vazby se spustily mimo pořadí 5 Upozornit, když může být rekurzivní vazba spuštěna mimo pořadí kvůli předávacímu odkazu.
52 Implicitní kopie struktur 5 Upozornit, když je zkopírovaná neměnná struktura, aby se zajistilo, že původní objekt není mutován operací.
1178 Implicitní rovnost/porovnání 5 Upozornit, pokud je deklarace typu jazyka F# implicitně odvozena jako NoEquality nebo NoComparison ale atribut není k dispozici u typu.
1182 Nepoužité proměnné Není k dispozici Upozornit na nepoužívané proměnné
3180 Implicitní přidělení haldy Není k dispozici Upozornit, když je proměnlivý místní objekt implicitně přidělen jako referenční buňka, protože byl zachycen uzavřením.
3186 Chybějící deklarace metadat Není k dispozici Upozornit, když uzel metadat jazyka F# nemá žádnou odpovídající deklaraci. Může indikovat přerušené sestavení; Může se vyžadovat rekompilace.
3366 Zápis indexu Není k dispozici Upozornit při použití zápisu expr.[idx] indexu F# 5.
3388 Další implicitní upcast Není k dispozici Upozornění při implicitní použití dalšího upcastu přidaného v jazyce F# 6
3389 Implicitní rozšíření Není k dispozici Upozornit, když se použije implicitní rozšíření čísel.
3390 Komentáře dokumentu XML s poškozeným formátem Není k dispozici Upozornit, když jsou komentáře dokumentu XML špatně formátovány různými způsoby.
3395 Převod argumentů implicitní metody Není k dispozici Upozorněte, pokud se implicitní převod používá ke sladění typu argumentu metody.
3517 Chyba InlineIfLambda Není k dispozici Upozornit, když optimalizátor F# nenasadí InlineIfLambda hodnotu, například pokud byla zadána vypočítaná hodnota funkce místo explicitního lambda.
3559 Odvození typu jako obj Není k dispozici Upozornit, pokud je typ implicitně odvozen jako ''obj''. Navrhněte přidání explicitních poznámek k typům.
3560 Všechna pole změněná v kopii záznamu Není k dispozici Upozornit, když výraz pro kopírování a aktualizaci záznamu změní všechna pole. Doporučujeme použít syntaxi konstrukce záznamů.
3570 Nejednoznačné vynechání nebo zkratka Není k dispozici Upozornit, pokud je nejednoznačným způsobem použit jako zahození i zkratka funkce ve stejném oboru.
3579 Interpolace netypových řetězců Není k dispozici Upozornit, pokud interpolované řetězce obsahují netypové hodnoty. Doporučuje se specifikátory formátovaného typu.
3582 Případ sjednocení stínů funkcí Není k dispozici Upozornit, když definice funkce neúmyslně stínuje sjednocovacího případu. K nejednoznačnosti použijte závorky.
3878 Atribut je neplatný u sjednocovacího případu s poli. Není k dispozici Upozornit, pokud atribut není platný pro použití u sjednocovacího případu s poli.

Tato upozornění můžete povolit pomocí /warnon:NNNN příslušného čísla upozornění nebo <WarnOn>NNNN</WarnOn> tam, kde NNNN je příslušné číslo upozornění. (Můžete také použít syntaxi <WarnOn>FSNNNN</WarnOn>, například <WarnOn>FS3388</WarnOn>.) Všimněte si, že pokud WarnOn je vlastnost zadána vícekrát, použije se pouze poslední výskyt. Chcete-li zadat více upozornění, zadejte WarnOn vlastnost jednou s řetězcem odděleným čárkami jako jeho obsah: <WarnOn>3388,3559</WarnOn>.

Jazyková verze a odsazení

Podpora jazyků závisí na pásu funkcí sady SDK. V sadě SDK .NET 11.0.100 vyžadují --langversion:preview funkce F# 11.2 nebo <LangVersion>preview</LangVersion>.

Upstreamová verze plánu uvádí F# 11.2 jako plánované výchozí nastavení pro .NET SDK 11.0.200. Kompilátor, který implementuje F# 11.2 také přijímá --langversion:11.2. Podporované číslovaný režimy začínají na F# 8; výchozí latest, a latestmajor závisí na nainstalovaném kompilátoru.

Režim odsazení bez striktního odsazení se odebere, včetně dřívějších očíslovaných režimů. Verze jazyka nemění dostupnost rozhraní API knihovny ani modulu runtime.

Paralelní kompilace

Aby se zkrátila doba sestavení, kompilátor F# 11 ve výchozím nastavení umožňuje paralelní kompilaci, včetně kontroly, optimalizace a generování IL na základě grafu. Zachovat deterministické sestavení povolená; paralelismus nevyžaduje nedeterministický výstup.

V případě řešení potíží nebo porovnání výkonu specifického pro projekt zakažte paralelní kompilaci:

<PropertyGroup>
  <ParallelCompilation>false</ParallelCompilation>
</PropertyGroup>

Slouží --parallelcompilation- k zakázání nebo --parallelcompilation+ povolení. Dostupný paralelismus závisí na zdrojových závislostech, jádrech a nastavení optimalizace; Pravidla pořadí souborů zůstávají beze změny. Porovnání najdete v tématu Výkon nástrojů .

Diagnostické seznamy

Kompilátor ignoruje nerozpoznané diagnostické identifikátory v --warnaserror seznamu, zatímco rozpoznané kódy upozornění jazyka F# stále platí. To pomáhá sdíleným nastavením sestavení, která obsahují diagnostická ID z jiných kompilátorů.

Nepovinná oznámení o překrývajících se rozložení záznamů najdete v tabulce upozornění šíření. Chybějící atributy podpisu, které jsou chyby v jazyce F# 11, najdete v tématu atributy kompilátoru sémantické.

Titulek Popis
Možnosti F# Interactive Popisuje možnosti příkazového řádku podporované interpretem jazyka F# fsi.exe.
Referenční dokumentace k vlastnostem projektu Popisuje uživatelské rozhraní pro projekty, včetně stránek vlastností projektu, které poskytují možnosti sestavení.