Opcje kompilatora

W tym artykule opisano opcje wiersza polecenia kompilatora dla kompilatora języka F#. dotnet build Polecenie wywołuje kompilator języka F# w plikach projektu F#. Pliki projektów języka F# są zanotowane przy użyciu .fsproj rozszerzenia .

Środowisko kompilacji można również kontrolować, ustawiając właściwości projektu. W przypadku projektów przeznaczonych dla platformy .NET Core właściwość <OtherFlags>...</OtherFlags> "Inne flagi" w .fsprojsystemie służy do określania dodatkowych opcji wiersza polecenia.

Opcje kompilatora w porządku alfabetycznym

W poniższej tabeli przedstawiono opcje kompilatora wymienione alfabetycznie. Niektóre opcje kompilatora języka F# są podobne do opcji kompilatora języka C#. W takim przypadku zostanie podany link do tematu opcji kompilatora języka C#.

Opcja kompilatora opis
--allsigs Generuje nowy (lub ponownie generuje istniejący) plik podpisu dla każdego pliku źródłowego w kompilacji. Aby uzyskać więcej informacji na temat plików podpisów, zobacz Podpisy.
-a filename.fs Generuje bibliotekę na podstawie określonego pliku. Ta opcja jest krótką formą --target:library filename.fs.
--baseaddress:address Określa preferowany adres podstawowy, pod którym ma być ładowana biblioteka DLL.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /baseaddress (Opcje kompilatora C#).
--codepage:id Określa, która strona kodowa ma być używana podczas kompilacji, jeśli wymagana strona nie jest bieżącą domyślną stroną kodów systemu.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /code pages (Opcje kompilatora C#).
--consolecolors Określa, że błędy i ostrzeżenia używają tekstu kodowanego kolorami w konsoli programu .
--crossoptimize[+ or -] Włącza lub wyłącza optymalizacje między modułami.
--delaysign[+|-] Opóźnienie podpisuje zestaw przy użyciu tylko publicznej części silnego klucza nazwy.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /delaysign (Opcje kompilatora C#).
--checked[+|-] Włącza lub wyłącza generowanie kontroli przepełnienia.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /checked (Opcje kompilatora C#).
--debug[+|-]

-g[+|-]

--debug:[full|pdbonly]

-g: [full|pdbonly]
Włącza lub wyłącza generowanie informacji debugowania lub określa typ informacji debugowania do wygenerowania. Wartość domyślna to full, która umożliwia dołączanie do uruchomionego programu. Wybierz pdbonly , aby uzyskać ograniczone informacje debugowania przechowywane w pliku pdb (program database).

Odpowiednik opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz

/debug (Opcje kompilatora C#).
--define:symbol

-d:symbol
Definiuje symbol do użycia w kompilacji warunkowej.
--deterministic[+|-] Tworzy zestaw deterministyczny (w tym identyfikator GUID wersji modułu i sygnaturę czasową). Tej opcji nie można używać z numerami wersji wieloznacznych i obsługuje tylko osadzone i przenośne typy debugowania
--doc:xmldoc-filename Instruuje kompilator, aby wygenerował komentarze dokumentacji XML do określonego pliku. Aby uzyskać więcej informacji, zobacz Dokumentację XML.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /doc (Opcje kompilatora C#).
--fullpaths Instruuje kompilator, aby wygenerował w pełni kwalifikowane ścieżki.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /fullpaths (Opcje kompilatora C#).
--help

-?
Wyświetla informacje o użyciu, w tym krótki opis wszystkich opcji kompilatora.
--highentropyva[+|-] Włączanie lub wyłączanie losowego układu przestrzeni adresowej o wysokiej entropii (ASLR, high-entropy address layout randomization, ASLR), ulepszonej funkcji zabezpieczeń. System operacyjny losuje lokalizacje w pamięci, w których ładowana jest infrastruktura aplikacji (takich jak stos i sterta). Jeśli włączysz tę opcję, systemy operacyjne mogą używać tej losowości do korzystania z pełnej 64-bitowej przestrzeni adresowej na 64-bitowej maszynie.
--keycontainer:key-container-name Określa kontener klucza silnej nazwy.
--keyfile:filename Określa nazwę pliku klucza publicznego do podpisywania wygenerowanego zestawu.
--lib:folder-name

-I:folder-name
Określa katalog, do którego mają być wyszukiwane zestawy, do których odwołuje się odwołanie.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /lib (Opcje kompilatora C#).
--linkresource:resource-info Łączy określony zasób z zestawem. Format informacji o zasobach to filename[name[public|private]]

Łączenie pojedynczego zasobu z tą opcją jest alternatywą dla osadzania całego pliku zasobu z opcją --resource .

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /linkresource (Opcje kompilatora C#).
--mlcompatibility Ignoruje ostrzeżenia wyświetlane podczas korzystania z funkcji zaprojektowanych pod kątem zgodności z innymi wersjami uczenia maszynowego.
--noframework Wyłącza domyślne odwołanie do zestawu .NET Framework.
--nointerfacedata Nakazuje kompilatorowi pominięcie zasobu, który zwykle dodaje do zestawu zawierającego metadane specyficzne dla języka F#.
--nologo Nie wyświetla tekstu transparentu podczas uruchamiania kompilatora.
--nooptimizationdata Nakazuje kompilatorowi uwzględnienie tylko optymalizacji niezbędnej do implementowania wbudowanych konstrukcji. Hamuje tworzenie konspektów między modułami, ale poprawia zgodność binarną.
--nowin32manifest Nakazuje kompilatorowi pominięcie domyślnego manifestu Win32.
--nowarn:warning-number-list Wyłącza określone ostrzeżenia wymienione według liczby. Oddziel każdy numer ostrzeżenia przecinkiem. Możesz odnaleźć numer ostrzeżenia dla dowolnego ostrzeżenia z danych wyjściowych kompilacji.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /nowarn (Opcje kompilatora C#).
--optimize[+|-] [optimization-option-list]

-O[+|-] [optimization-option-list]
Włącza lub wyłącza optymalizacje. Niektóre opcje optymalizacji można wyłączyć lub włączyć selektywnie, wyświetlając je na liście. Oto: nojitoptimize, , nojittrackingnolocaloptimize, , nocrossoptimize, notailcalls.
--out:output-filename

-o:output-filename
Określa nazwę skompilowanego zestawu lub modułu.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /out (Opcje kompilatora C#).
--pathmap:path=sourcePath,... Określa sposób mapowania ścieżek fizycznych na nazwy ścieżek źródłowych wyjściowych przez kompilator.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /pathmap (Opcje kompilatora C#).
--pdb:pdb-filename Nazwij plik PDB (program database) danych wyjściowych debugowania. Ta opcja ma zastosowanie tylko wtedy, gdy --debug jest również włączona.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /pdb (Opcje kompilatora C#).
--platform:platform-name Określa, że wygenerowany kod będzie uruchamiany tylko na określonej platformie (x86, Itaniumlub x64), lub, jeśli wybrano nazwę anycpu platformy, określa, że wygenerowany kod może działać na dowolnej platformie.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /platform (Opcje kompilatora C#).
--preferreduilang:lang Określa preferowaną nazwę kultury języka wyjściowego (na przykład es-ES, ja-JP).
--quotations-debug Określa, że dodatkowe informacje debugowania powinny być emitowane dla wyrażeń, które pochodzą z literałów cudzysłowu języka F# i odzwierciedlone definicje. Informacje o debugowaniu są dodawane do atrybutów niestandardowych węzła drzewa wyrażeń języka F#. Zobacz Cudzysłów kodu i expr.CustomAttributes.
--reference:assembly-filename

-r:assembly-filename
Udostępnia kod z zestawu języka F# lub .NET Framework do kompilowanego kodu.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /reference (Opcje kompilatora C#).
--resource:resource-filename Osadza plik zasobu zarządzanego w wygenerowanym zestawie.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /resource (Opcje kompilatora C#).
--sig:signature-filename Generuje plik podpisu na podstawie wygenerowanego zestawu. Aby uzyskać więcej informacji na temat plików podpisów, zobacz Podpisy.
--simpleresolution Określa, że odwołania do zestawów powinny być rozwiązywane przy użyciu reguł mono opartych na katalogu, a nie rozpoznawania MSBuild. Wartością domyślną jest użycie rozwiązania MSBuild z wyjątkiem uruchamiania w obszarze Mono.
--standalone Określa, aby utworzyć zestaw zawierający wszystkie jego zależności, aby był uruchamiany samodzielnie bez konieczności dodatkowych zestawów, takich jak biblioteka języka F#.
--staticlink:assembly-name Statycznie łączy dany zestaw i wszystkie przywoływane biblioteki DLL, które zależą od tego zestawu. Użyj nazwy zestawu, a nie nazwy biblioteki DLL.
--subsystemversion Określa wersję podsystemu systemu operacyjnego, która ma być używana przez wygenerowany plik wykonywalny. Użyj wersji 6.02 dla systemu Windows 8.1, 6.01 dla systemu Windows 7, 6.00 dla systemu Windows Vista. Ta opcja dotyczy tylko plików wykonywalnych, a nie bibliotek DLL i musi być używana tylko wtedy, gdy aplikacja zależy od określonych funkcji zabezpieczeń dostępnych tylko w niektórych wersjach systemu operacyjnego. Jeśli ta opcja jest używana, a użytkownik próbuje wykonać aplikację w niższej wersji systemu operacyjnego, zakończy się niepowodzeniem z komunikatem o błędzie.
--tailcalls[+|-] Włącza lub wyłącza użycie instrukcji tail IL, co powoduje ponowne użycie ramki stosu dla funkcji rekursywnych ogona. Ta opcja jest domyślnie włączona.
--target:[exe|winexe|library|module] filename Określa typ i nazwę pliku wygenerowanego skompilowanego kodu.
  • exe oznacza aplikację konsolową.
  • winexe oznacza aplikację systemu Windows, która różni się od aplikacji konsolowej, ponieważ nie ma ona standardowych strumieni wejściowych/wyjściowych (stdin, stdout i stderr).
  • library jest zestawem bez punktu wejścia.
  • module to moduł .NET Framework (.netmodule), który można później połączyć z innymi modułami w zestawie.
    • Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /target (Opcje kompilatora C#).
--times Wyświetla informacje o chronometrażu kompilacji.
--utf8output Umożliwia drukowanie danych wyjściowych kompilatora w kodowaniu UTF-8.
--warn:warning-level Ustawia poziom ostrzeżenia (od 0 do 5). Domyślny poziom to 3. Każde ostrzeżenie otrzymuje poziom na podstawie jego ważności. Poziom 5 daje więcej, ale mniej poważne ostrzeżenia niż poziom 1.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /warn (Opcje kompilatora C#).
--warnon:warning-number-list Włącz określone ostrzeżenia, które mogą być domyślnie wyłączone lub wyłączone przez inną opcję wiersza polecenia. Lista jest rozdzielona przecinkami.
--warnaserror[+|-] [warning-number-list] Włącza lub wyłącza opcję zgłaszania ostrzeżeń jako błędów. Możesz podać określone numery ostrzeżeń, które mają być wyłączone lub włączone. Opcje w dalszej części wiersza polecenia zastępują opcje wcześniej w wierszu polecenia. Aby na przykład określić ostrzeżenia, których nie chcesz zgłaszać jako błędy, określ wartość --warnaserror+--warnaserror-:warning-number-list.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /warnaserror (Opcje kompilatora C#).
--win32manifest:manifest-filename Dodaje plik manifestu Win32 do kompilacji. Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /win32manifest (Opcje kompilatora C#).
--win32res:resource-filename Dodaje plik zasobu Win32 do kompilacji.

Ta opcja kompilatora jest równoważna opcji kompilatora języka C# o tej samej nazwie. Aby uzyskać więcej informacji, zobacz /win32res ((C#) Opcje kompilatora).

Ostrzeżenia dotyczące zgody

Kompilator języka F# obsługuje kilka ostrzeżeń dotyczących zgody:

Liczba Podsumowanie Poziom opis
21 Rekursja sprawdzona w czasie wykonywania 5 Ostrzegaj, gdy rekursywne użycie jest sprawdzane pod kątem inicjowania dźwięku w czasie wykonywania.
22 Powiązania wykonywane poza kolejnością 5 Ostrzegaj, gdy powiązanie cykliczne może być wykonywane poza kolejnością z powodu odwołania do przodu.
52 Niejawne kopie struktur 5 Ostrzegaj, gdy niezmienialna struktura jest kopiowana, aby upewnić się, że oryginał nie jest modyfikowany przez operację.
1178 Niejawna równość/porównanie 5 Ostrzegaj, gdy deklaracja typu języka F# jest niejawnie wnioskowana lub NoEqualityNoComparison atrybut nie jest obecny w typie.
1182 Nieużywane zmienne nie dotyczy Ostrzegaj przed nieużywanymi zmiennymi.
3180 Niejawne alokacje sterty nie dotyczy Ostrzegaj, gdy modyfikowalny lokalny jest niejawnie przydzielany jako komórka odniesienia, ponieważ został przechwycony przez zamknięcie.
3366 Notacja indeksu nie dotyczy Ostrzegaj, gdy jest używana notacja expr.[idx] indeksu F# 5.
3517 Błąd inlineIfLambda nie dotyczy Ostrzegaj, gdy optymalizator języka F# nie w tekście InlineIfLambda wartości, na przykład jeśli podana została obliczona wartość funkcji zamiast jawnego wyrażenia lambda.
3387 op_Implicit Konwersji nie dotyczy Ostrzegaj, gdy niejawna konwersja platformy .NET jest używana w argumencie metody.
3388 Dodatkowa niejawna emisja upcast nie dotyczy Ostrzegaj, gdy dodatkowa emisja upcast jest niejawnie używana, dodana w języku F# 6.
3389 Niejawne rozszerzanie nie dotyczy Ostrzegaj, gdy jest używane niejawne rozszerzenie liczbowe.
3390 Źle sformułowane komentarze do dokumentu XML nie dotyczy Ostrzegaj, gdy komentarze dokumentu XML są źle sformułowane na różne sposoby.

Możesz włączyć te ostrzeżenia, używając /warnon:NNNN lub <WarnOn>NNNN</WarnOn> gdzie NNNN jest odpowiedni numer ostrzeżenia. (Można również użyć składni <WarnOn>FSNNNN</WarnOn>, np. <WarnOn>FS3388</WarnOn>.) Należy pamiętać, że jeśli WarnOn właściwość jest określona wiele razy, używane jest tylko ostatnie wystąpienie. Aby określić wiele ostrzeżeń, podaj WarnOn właściwość raz z ciągiem rozdzielanym przecinkami jako jego zawartość: <WarnOn>3388,3559</WarnOn>.

Nazwa opis
Opcje F# Interactive Opisuje opcje wiersza polecenia obsługiwane przez interpreter języka F# fsi.exe.
Odwołanie do właściwości projektu Opisuje interfejs użytkownika projektów, w tym strony właściwości projektu, które udostępniają opcje kompilacji.