Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Apps, die System.CommandLine verwenden, verfügen über eine eingebaute Unterstützung für die Tab-Vervollständigung in bestimmten Shells. Um es zu aktivieren, muss der Endbenutzer einmal pro Shell einige Schritte ausführen. Sobald dies erfolgt ist, wird der Tab-Abschluss für statische Werte in Ihrer App automatisch ausgeführt, z. B. Enumerationswerte oder durch Aufrufen AcceptOnlyFromAmong(String[])definierte Werte. Sie können die Tab-Vervollständigung auch anpassen, indem Sie Werte dynamisch zur Laufzeit bereitstellen.
Tab-Vervollständigung aktivieren
Führen Sie auf dem Computer, auf dem Sie (der Endbenutzer) die Tab-Vervollständigung aktivieren möchten, die folgenden Schritte aus.
Für die .NET CLI:
Für andere Befehlszeilenanwendungen, die auf System.CommandLine basieren:
Installieren Sie das
dotnet-suggestglobale Tool:dotnet tool install -g dotnet-suggestFügen Sie das entsprechende Shim-Skript zu Ihrem Shell-Profil hinzu. Möglicherweise müssen Sie eine Shellprofildatei erstellen. Das Shim-Skript leitet Abschlussanforderungen von Ihrer Shell an das
dotnet-suggest-Werkzeug weiter, das sie an die entsprechendeSystem.CommandLine-basierte App delegiert.Fügen Sie für
bashden Inhalt von dotnet-suggest-shim.bash zu ~/.bash_profile hinzu.Fügen Sie
zshden Inhalt von dotnet-suggest-shim.zsh zu ~/.zshrc hinzu.Fügen Sie für PowerShell den Inhalt von dotnet-suggest-shim.ps1 zu Ihrem PowerShell-Profil hinzu, und starten Sie PowerShell dann neu. Sie finden den erwarteten Pfad zu Ihrem PowerShell-Profil mit dem folgenden Befehl:
echo $profile
Registrieren Sie die App, indem Sie die Datei aufrufen
dotnet-suggest register --command-path $executableFilePath. Dabei$executableFilePathhandelt es sich um den Pfad zur ausführbaren Datei der App.
Sobald die Shell des Benutzers eingerichtet ist und die ausführbare Datei registriert ist, funktionieren die Fertigstellungen für alle Apps, die mit der Verwendung System.CommandLineerstellt werden.
Für cmd.exe unter Windows (die Windows-Eingabeaufforderung) gibt es keinen erweiterbaren Mechanismus für die Tab-Autovervollständigung, sodass kein Shim-Skript verfügbar ist. Suchen Sie bei anderen Shells nach einem GitHub-Problem, das mit der Bezeichnung versehen ist Area-Completions. Wenn Sie kein Problem finden, können Sie eine neue öffnen.
Abrufen von Tab-Vervollständigungswerten zur Laufzeit
Der folgende Code zeigt eine App, die Werte für die Registerkartenvervollständigung dynamisch zur Laufzeit abruft. Der Code ruft eine Liste der nächsten Termine nach dem aktuellen Datum ab. Die Liste wird der --date Option durch Aufrufen von CompletionSources.Add bereitgestellt.
using System.CommandLine;
using System.CommandLine.Completions;
using System.CommandLine.Parsing;
new DateCommand().Parse(args).Invoke();
class DateCommand : Command
{
private Argument<string> subjectArgument = new("subject")
{
Description = "The subject of the appointment."
};
private Option<DateTime> dateOption = new("--date")
{
Description = "The day of week to schedule. Should be within one week."
};
public DateCommand() : base("schedule", "Makes an appointment for sometime in the next week.")
{
this.Arguments.Add(subjectArgument);
this.Options.Add(dateOption);
dateOption.CompletionSources.Add(ctx => {
var today = System.DateTime.Today;
List<CompletionItem> dates = new();
foreach (var i in Enumerable.Range(1, 7))
{
var date = today.AddDays(i);
dates.Add(new CompletionItem(
label: date.ToShortDateString(),
sortText: $"{i:2}"));
}
return dates;
});
this.SetAction(parseResult =>
{
Console.WriteLine($"Scheduled \"{parseResult.GetValue(subjectArgument)}\" for {parseResult.GetValue(dateOption)}");
});
}
}
Die Werte, die angezeigt werden, wenn die TAB-TASTE gedrückt wird, werden als CompletionItem Instanzen bereitgestellt:
dates.Add(new CompletionItem(
label: date.ToShortDateString(),
sortText: $"{i:2}"));
Die folgenden CompletionItem Eigenschaften werden festgelegt:
- Label ist der anzuzeigende Abschlusswert.
-
SortText stellt sicher, dass die Werte in der Liste in der richtigen Reihenfolge angezeigt werden. Sie wird durch Konvertieren
iin eine zweistellige Zeichenfolge festgelegt, sodass die Sortierung auf 01, 02, 03 usw. bis 14 basiert. Wenn Sie diesen Parameter nicht festlegen, basiert die Sortierung aufLabel, das in diesem Beispiel im kurzen Datumsformat angezeigt wird und nicht ordnungsgemäß sortiert wird.
Es gibt andere CompletionItem-Eigenschaften, z. B. Documentation und Detail, aber sie werden noch nicht in System.CommandLine verwendet.
Die dynamische Tab-Vervollständigungsliste, die von diesem Code erstellt wurde, wird auch in der Hilfeausgabe angezeigt.
Description:
Makes an appointment for sometime in the next week.
Usage:
schedule <subject> [options]
Arguments:
<subject> The subject of the appointment.
Options:
--date The day of week to schedule. Should be within one week.
<12/4/2025|12/5/2025|12/6/2025|12/7/2025|12/8/2025|12/9/2025|12/10/2025>
--version Show version information
-?, -h, --help