Tabulátor kitöltése a következőhöz: System.CommandLine
Fontos
System.CommandLine
jelenleg előzetes verzióban érhető el, és ez a dokumentáció a 2.0-s bétaverzió 4-es verziójához készült.
Egyes információk az előzetes termékre vonatkoznak, amelyek a kiadás előtt jelentősen módosíthatók. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
A használt System.CommandLine
alkalmazások beépített támogatást nyújtanak a lapkiegészítéshez bizonyos rendszerhéjakban. Ennek engedélyezéséhez a végfelhasználónak rendszerhéjonként egyszer kell elvégeznie néhány lépést. A felhasználó ezt követően automatikusan elvégzi az alkalmazás statikus értékeit, például a FromAmong meghívásával definiált enumerálási értékeket vagy értékeket. A lapkitöltést úgy is testre szabhatja, hogy futásidőben dinamikusan lekért értékeket.
Parancssori kiegészítés engedélyezése
Azon a gépen, amelyen engedélyezni szeretné a tabulátor befejezését, hajtsa végre az alábbi lépéseket.
A .NET parancssori felület esetében:
- További információt a Lapkiegészítés engedélyezése című témakörben talál.
Egyéb parancssori alkalmazásokhoz, amelyek a következőre épülnek System.CommandLine
:
Telepítse a
dotnet-suggest
globális eszközt.Adja hozzá a megfelelő shim-szkriptet a rendszerhéjprofilhoz. Előfordulhat, hogy létre kell hoznia egy rendszerhéjprofil-fájlt. A shim-szkript továbbítja a befejezési kérelmeket a rendszerhéjból az
dotnet-suggest
eszköznek, amely a megfelelőSystem.CommandLine
-alapú alkalmazáshoz delegál.Ehhez
bash
adja hozzá a dotnet-suggest-shim.bash tartalmát a ~/.bash_profile.Ehhez
zsh
adja hozzá a dotnet-suggest-shim.zsh tartalmát a ~/.zshrc fájlhoz.PowerShell esetén adja hozzá a dotnet-suggest-shim.ps1 tartalmát a PowerShell-profiljához. A PowerShell-profil várt elérési útját a következő parancs futtatásával találja meg a konzolon:
echo $profile
Ha a felhasználó rendszerhéja be van állítva, a befejezések a használatával System.CommandLine
létrehozott összes alkalmazás esetében működni fognak.
Windows cmd.exe esetén (a Windows parancssorában) nincs csatlakoztatható lapkiegészítési mechanizmus, ezért nem érhető el shim szkript. Más rendszerhéjak esetén keressen egy GitHub-problémát, amely címkével van ellátva Area-Completions
. Ha nem talál problémát, megnyithat egy újat.
Lapkiegészítési értékek lekérése futásidőben
Az alábbi kód egy alkalmazást mutat be, amely futásidőben dinamikusan lekéri a tabulátorkitöltés értékeit. A kód lekéri az aktuális dátumot követő következő két hét dátumainak listáját. A lista a következő hívással AddCompletions
érhető el:--date
using System.CommandLine;
using System.CommandLine.Completions;
using System.CommandLine.Parsing;
await new DateCommand().InvokeAsync(args);
class DateCommand : Command
{
private Argument<string> subjectArgument =
new ("subject", "The subject of the appointment.");
private Option<DateTime> dateOption =
new ("--date", "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.AddArgument(subjectArgument);
this.AddOption(dateOption);
dateOption.AddCompletions((ctx) => {
var today = System.DateTime.Today;
var dates = new List<CompletionItem>();
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.SetHandler((subject, date) =>
{
Console.WriteLine($"Scheduled \"{subject}\" for {date}");
},
subjectArgument, dateOption);
}
}
A tabulátorbillentyű lenyomásakor megjelenített értékek példányként CompletionItem
vannak megadva:
dates.Add(new CompletionItem(
label: date.ToShortDateString(),
sortText: $"{i:2}"));
A következő CompletionItem
tulajdonságok vannak beállítva:
Label
a megjelenítendő befejezési érték.SortText
biztosítja, hogy a lista értékei a megfelelő sorrendben jelenjenek meg. Úgy van beállítva, hogy kétjegyű sztringre konvertáljai
, így a rendezés alapja a 01, 02, 03 stb. Ha nem állítja be ezt a paramétert, a rendezés aLabel
jelen példában rövid dátumformátumú, és nem lesz megfelelően rendezve.
Vannak más CompletionItem
tulajdonságok is, például Documentation
az és Detail
, de még nem használják őket a fájlban System.CommandLine
.
A kód által létrehozott dinamikus lapkiegészítési lista a súgó kimenetében is megjelenik:
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