Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Appar som använder System.CommandLine har inbyggt stöd för att slutföra flikar i vissa gränssnitt. För att aktivera den måste slutanvändaren vidta några steg en gång per kommandotolk. När detta är klart är flikslutningen automatisk för statiska värden i din app, till exempel uppräkningsvärden eller värden som definieras genom att anropa AcceptOnlyFromAmong(String[]). Du kan även anpassa tab-komplettering genom att tillhandahålla värden dynamiskt under körning.
Aktivera flikavslut
Följ dessa steg på den dator där du vill aktivera flikavslut.
För .NET CLI:
För andra kommandoradsappar som bygger på System.CommandLine:
Installera det
dotnet-suggestglobala verktyget.Lägg till lämpligt shim-skript i din shell-profil. Du kan behöva skapa en shell-profilfil. Shim-skriptet vidarebefordrar slutförandebegäranden från gränssnittet till
dotnet-suggestverktyget, vilket delegerar dem till lämpligSystem.CommandLine-baserad app.För
bashlägger du till innehållet i dotnet-suggest-shim.bash i ~/.bash_profile.För
zshlägger du till innehållet i dotnet-suggest-shim.zsh i ~/.zshrc.För PowerShell lägger du till innehållet i dotnet-suggest-shim.ps1 i din PowerShell-profil. Du hittar den förväntade sökvägen till PowerShell-profilen genom att köra följande kommando i konsolen:
echo $profile
Registrera appen genom att anropa
dotnet-suggest register --command-path $executableFilePath, där$executableFilePathär sökvägen till appens körbara fil.
När användarens gränssnitt har konfigurerats och den körbara filen har registrerats fungerar slutföranden för alla appar som skapas med hjälp System.CommandLineav .
För cmd.exe i Windows (Kommandotolken för Windows) finns det ingen pluggbar mekanism för komplettering av flikar, så inget s.k. shim-skript är tillgängligt. För andra skal leta efter ett GitHub-problem som är märkt Area-Completions. Om du inte hittar något problem kan du öppna ett nytt.
Hämta flikslutvärden vid körning
Följande kod visar en app som hämtar värden för flikavslut dynamiskt vid körning. Koden hämtar en lista över de kommande två veckornas datum efter det aktuella datumet. Listan tillhandahålls till alternativet --date genom att anropa 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)}");
});
}
}
De värden som visas när tabbtangenten trycks in anges som CompletionItem instanser:
dates.Add(new CompletionItem(
label: date.ToShortDateString(),
sortText: $"{i:2}"));
Följande CompletionItem egenskaper anges:
-
Labelär det slutförandevärde som ska visas. -
SortTextser till att värdena i listan visas i rätt ordning. Den anges genom attikonvertera till en tvåsiffrig sträng, så att sortering baseras på 01, 02, 03 och så vidare, till och med 14. Om du inte anger den här parametern baseras sortering påLabel, som i det här exemplet är i kort datumformat och inte sorteras korrekt.
Det finns andra CompletionItem egenskaper, till exempel Documentation och Detail, men de används ännu inte i System.CommandLine.
Den dynamiska flikslutlistan som skapas av den här koden visas också i hjälputdata:
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.
<2/4/2022|2/5/2022|2/6/2022|2/7/2022|2/8/2022|2/9/2022|2/10/2022>
--version Show version information
-?, -h, --help