Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aplikacje, które używają System.CommandLine , mają wbudowaną obsługę uzupełniania kart w niektórych powłokach. Aby ją włączyć, użytkownik końcowy musi wykonać kilka kroków przy każdym uruchomieniu powłoki. Po wykonaniu tego kroku, automatyczne uzupełnianie dla wartości statycznych w aplikacji, takich jak wartości enumeracji lub wartości zdefiniowane poprzez wywołanie metody AcceptOnlyFromAmong(String[]), będzie dostępne. Możesz również dostosować uzupełnianie automatyczne, podając wartości dynamicznie podczas działania programu.
Włącz uzupełnianie kart.
Na komputerze, na którym chcesz włączyć uzupełnianie poleceń, wykonaj następujące kroki.
Interfejs CLI .NET:
W przypadku innych aplikacji wiersza polecenia utworzonych na platformie System.CommandLine:
dotnet-suggestZainstaluj narzędzie globalne:dotnet tool install -g dotnet-suggestDodaj odpowiedni skrypt podkładki do profilu powłoki. Może być konieczne utworzenie pliku profilu powłoki. Skrypt pomocniczy przekazuje żądania uzupełnienia z powłoki do narzędzia
dotnet-suggest, które przekazuje je odpowiedniej aplikacji opartej naSystem.CommandLine.W polu
bashdodaj zawartość pliku dotnet-suggest-shim.bash do pliku ~/.bash_profile.W przypadku
zsh, dodaj zawartość pliku dotnet-suggest-shim.zsh do pliku ~/.zshrc.W przypadku programu PowerShell dodaj zawartość dotnet-suggest-shim.ps1 do profilu programu PowerShell, a następnie uruchom ponownie program PowerShell. Oczekiwaną ścieżkę do profilu programu PowerShell można znaleźć za pomocą następującego polecenia:
echo $profile
Zarejestruj aplikację, wywołując metodę
dotnet-suggest register --command-path $executableFilePath, gdzie$executableFilePathjest ścieżką do pliku wykonywalnego aplikacji.
Po skonfigurowaniu powłoki użytkownika i zarejestrowaniu pliku wykonywalnego, funkcja autouzupełniania będzie działać dla wszystkich aplikacji utworzonych przy użyciu System.CommandLine.
W przypadku cmd.exe w systemie Windows (wiersz polecenia systemu Windows) nie ma mechanizmu możliwości uzupełniania poleceń za pomocą klawisza Tab, więc nie jest dostępny żaden skrypt pośredniczący. W przypadku innych powłok poszukaj zgłoszenia na GitHub oznaczonego Area-Completionsetykietą. Jeśli nie znajdziesz problemu, możesz otworzyć nowy.
Pobieranie wartości uzupełniania poleceń przez tabulator w czasie wykonywania
Poniższy kod przedstawia aplikację, która pobiera wartości na potrzeby dynamicznego uzupełniania tabulacji w czasie wykonywania. Kod pobiera listę dat z następnego tygodnia po bieżącej dacie. Lista jest udostępniana --date opcji przez wywołanie metody CompletionSources.Add:
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)}");
});
}
}
Wartości wyświetlane po naciśnięciu Tab udostępniane są jako wystąpienia CompletionItem:
dates.Add(new CompletionItem(
label: date.ToShortDateString(),
sortText: $"{i:2}"));
Ustawiane są następujące CompletionItem właściwości:
- Label to wartość ukończenia, która ma być wyświetlana.
-
SortText zapewnia, że wartości na liście są prezentowane w odpowiedniej kolejności. Jest on ustawiany przez przekonwertowanie
ina dwucyfrowy ciąg, tak aby sortowanie było oparte na wartości 01, 02, 03 itd. do 14. Jeśli nie ustawisz tego parametru, sortowanie jest oparte na metodzieLabel, która w tym przykładzie jest w formacie daty krótkiej i nie będzie sortować poprawnie.
Istnieją inne CompletionItem właściwości, takie jak Documentation i Detail, ale nie są jeszcze używane w kontekście System.CommandLine.
Lista uzupełniania kart dynamicznych utworzona przez ten kod jest również wyświetlana w danych wyjściowych pomocy:
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