Freigeben über


F#-Interaktive Optionen

In diesem Artikel werden die Befehlszeilenoptionen beschrieben, die von F# Interactive, fsi.exeunterstützt werden. F# Interactive akzeptiert viele der gleichen Befehlszeilenoptionen wie der F#-Compiler, akzeptiert aber auch einige zusätzliche Optionen.

Verwenden von F# Interactive für Skripts

F# Interactive, dotnet fsi, kann interaktiv gestartet werden, oder es kann über die Befehlszeile gestartet werden, um ein Skript auszuführen. Die Befehlszeilensyntax lautet

dotnet fsi [options] [ script-file [arguments] ]

Die Dateierweiterung für F#-Skriptdateien ist .fsx.

Tabelle der interaktiven F#-Optionen

In der folgenden Tabelle sind die optionen zusammengefasst, die von F# Interactive unterstützt werden. Sie können diese Optionen in der Befehlszeile oder über die Visual Studio-IDE festlegen. Um diese Optionen in der Visual Studio-IDE festzulegen, öffnen Sie das Menü Extras, wählen Sie Optionen, erweitern Sie anschließend den Knoten F#-Tools, und wählen Sie dann F# Interactive.

Wenn Listen in F# Interactive-Optionsargumenten angezeigt werden, werden Listenelemente durch Semikolons (;) getrennt.

Option Beschreibung
-- Wird verwendet, um F# Interactive anzuweisen, verbleibende Argumente als Befehlszeilenargumente für das F#-Programm oder Skript zu behandeln, auf das Sie mithilfe der Liste fsi in Code zugreifen können. CommandLineArgs.
--checked[+|-] Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--checknulls[+|-] Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--codepage:<int> Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--consolecolors[+|-] Gibt Warnungen und Fehlermeldungen in Farbe aus.
**--compilertool:<extensionsfolder> Verweisen Sie auf eine Assembly oder ein Verzeichnis mit einem Entwurfszeittool (Kurzform: -t).
--crossoptimize[+|-] Aktivieren oder Deaktivieren von modulübergreifenden Optimierungen.
--debug[+|-]

--debug:[full|pdbonly|portable|embedded]

-g[+|-]

-g:[full|pdbonly|portable|embedded]
Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--define:<string> Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--deterministic[+|-] Erzeugt eine deterministische Assembly (einschließlich Modulversions-GUID und Zeitstempel).
--exec Weist F# interaktiv an, nach dem Laden der Dateien zu beenden oder die in der Befehlszeile angegebene Skriptdatei auszuführen.
--fullpaths Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--gui[+|-] Aktiviert oder deaktiviert die Windows Forms-Ereignisschleife. Der Standardwert ist aktiviert.
--help

-?
Wird verwendet, um die Befehlszeilensyntax und eine kurze Beschreibung der einzelnen Optionen anzuzeigen.
--lib:<Ordnerliste>

-I:<Ordnerliste>
Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--load:<filename> Kompiliert den angegebenen Quellcode beim Start und lädt die kompilierten F#-Konstrukte in die Sitzung.
--mlcompatibility Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--noframework Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen
--nologo Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--nowarn:<warning-list> Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--optimize[+|-] Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--preferreduilang:<lang> Gibt den bevorzugten Kulturnamen der Ausgabesprache an (z. B. es-ES, ja-JP).
--quiet Unterdrückt die Ausgabe von F# Interactive an den stdout-Stream.
--quotations-debug Gibt an, dass zusätzliche Debuginformationen für Ausdrücke ausgegeben werden sollen, die von F#-Anführungsliteralen und reflektierten Definitionen abgeleitet werden. Die Debug-Informationen werden den benutzerdefinierten Attributen eines Knotens im Ausdrucksbaum von F# hinzugefügt. Weitere Informationen finden Sie unter Codezitate sowie unter Expr.CustomAttributes.
--readline[+|-] Aktivieren oder Deaktivieren der Tab-Vervollständigung im interaktiven Modus.
--reference:<filename>

-r:<Dateinamen>
Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--tailcalls[+|-] Aktiviert oder deaktiviert die Verwendung der Tail-IL-Anweisung, die für endrekursive Funktionen die Wiederverwendung des Stapelrahmens verursacht. Diese Option ist standardmäßig aktiviert.
--targetprofile:<string> Gibt das Zielframeworkprofil dieser Assembly an. Gültige Werte sind mscorlib, netcoreoder netstandard. Der Standardwert ist mscorlib.
--use:<filename> Weist den Dolmetscher an, die angegebene Datei beim Start als anfängliche Eingabe zu verwenden.
--utf8output Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--warn:<Warnstufe> Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--warnaserror[+|-] Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--warnaserror[+|-]:<int-list> Identisch mit der fsc.exe Compileroption. Weitere Informationen finden Sie unter Compileroptionen.

F# Interaktiver strukturierter Druck

F# Interactive (dotnet fsi) verwendet eine erweiterte Version der strukturierten Nur-Text-Formatierung, um Werte zu melden.

  1. Alle Features von %A Nur-Text-Formatierung werden unterstützt, und einige sind zusätzlich anpassbar.

  2. Das Drucken ist farbig, wenn Farben von der Ausgabekonsole unterstützt werden.

  3. Eine Beschränkung wird auf die angezeigte Länge von Zeichenfolgen gesetzt, es sei denn, Sie bewerten diese Zeichenfolge explizit.

  4. Eine Reihe von benutzerdefinierten Einstellungen ist über das fsi-Objekt verfügbar.

Die verfügbaren Einstellungen zum Anpassen des Nur-Text-Drucks für gemeldete Werte sind:

open System.Globalization

fsi.FormatProvider <- CultureInfo("de-DE")  // control the default culture for primitives

fsi.PrintWidth <- 120        // Control the width used for structured printing

fsi.PrintDepth <- 10         // Control the maximum depth of nested printing

fsi.PrintLength <- 10        // Control the length of lists and arrays

fsi.PrintSize <- 100         // Control the maximum overall object count

fsi.ShowProperties <- false  // Control whether properties of .NET objects are shown by default

fsi.ShowIEnumerable <- false // Control whether sequence values are expanded by default

fsi.ShowDeclarationValues <- false // Control whether values are shown for declaration outputs

Anpassen mit AddPrinter und AddPrintTransformer

Das Drucken in F# Interactive-Ausgaben kann mithilfe von fsi.AddPrinter und fsi.AddPrintTransformerangepasst werden. Die erste Funktion gibt Text an, um den Druck eines Objekts zu ersetzen. Die zweite Funktion gibt stattdessen ein Ersatzobjekt zurück, das angezeigt werden soll. Betrachten Sie beispielsweise den folgenden F#-Code:

open System

fsi.AddPrinter<DateTime>(fun dt -> dt.ToString("s"))

type DateAndLabel =
    { Date: DateTime
      Label: string  }

let newYearsDay1999 =
    { Date = DateTime(1999, 1, 1)
      Label = "New Year" }

Wenn Sie das Beispiel in F# Interactive ausführen, wird es basierend auf dem Formatierungsoptionssatz ausgegeben. In diesem Fall wirkt es sich auf die Formatierung von Datum und Uhrzeit aus:

type DateAndLabel =
  { Date: DateTime
    Label: string }
val newYearsDay1999 : DateAndLabel = { Date = 1999-01-01T00:00:00
                                       Label = "New Year" }

fsi.AddPrintTransformer kann verwendet werden, um ein Ersatzobjekt zum Drucken bereitzustellen.

type MyList(values: int list) =
    member _.Values = values

fsi.AddPrintTransformer(fun (x:MyList) -> box x.Values)

let x = MyList([1..10])

Folgendes wird ausgegeben:

val x : MyList = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]

Wenn die an fsi.AddPrintTransformer übergebene Transformatorfunktion nullzurückgibt, wird der Drucktransformer ignoriert. Dies kann verwendet werden, um jeden Eingabewert zu filtern, indem er mit dem Typ objbeginnt. Zum Beispiel:

fsi.AddPrintTransformer(fun (x:obj) ->
    match x with
    | :? string as s when s = "beep" -> box ["quack"; "quack"; "quack"]
    | _ -> null)

let y = "beep"

Folgendes wird ausgegeben:

val y : string = ["quack"; "quack"; "quack"]
Titel Beschreibung
Compileroptionen Beschreibt Befehlszeilenoptionen, die für den F#-Compiler fsc.exeverfügbar sind.