Megosztás a következőn keresztül:


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:

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 bashadja hozzá a dotnet-suggest-shim.bash tartalmát a ~/.bash_profile.

    • Ehhez zshadja 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.CommandLinelé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álja i , így a rendezés alapja a 01, 02, 03 stb. Ha nem állítja be ezt a paramétert, a rendezés a Labeljelen 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

Lásd még

System.CommandLine Áttekintés