Bagikan melalui


Cara mengatur pengurai di System.CommandLine

Penting

System.CommandLine saat ini dalam PRATINJAU, dan dokumentasi ini untuk versi 2.0 beta 5. Beberapa informasi berkaitan dengan produk prarilis yang mungkin dimodifikasi secara substansial sebelum dirilis. Microsoft tidak memberikan jaminan, tersurat maupun tersirat, sehubungan dengan informasi yang diberikan di sini.

System.CommandLine.CommandLineConfiguration adalah kelas yang menyediakan properti untuk mengonfigurasi pengurai. Ini adalah argumen opsional untuk setiap Parse metode, seperti System.CommandLine.Command.Parse atau System.CommandLine.Parsing.CommandLineParser.Parse. Ketika tidak disediakan, konfigurasi default digunakan.

Setiap System.CommandLine.ParseResult instans memiliki System.CommandLine.ParseResult.Configuration properti yang mengembalikan konfigurasi yang digunakan untuk penguraian.

Output dan kesalahan standar

System.CommandLine.CommandLineConfiguration membuat pengujian, serta banyak skenario ekstensibilitas, lebih mudah daripada menggunakan System.Console. Ini menampilkan dua TextWriter properti: Output dan Error. Ini dapat diatur ke instans apa pun TextWriter , seperti StringWriter, yang dapat digunakan untuk menangkap output untuk pengujian.

Mari kita tentukan perintah sederhana yang menulis ke output standar:

Option<FileInfo?> fileOption = new("--file")
{
    Description = "An option whose argument is parsed as a FileInfo"
};

RootCommand rootCommand = new("Configuration sample")
{
    fileOption
};

rootCommand.SetAction((parseResult) =>
{
    FileInfo? fileOptionValue = parseResult.GetValue(fileOption);
    parseResult.Configuration.Output.WriteLine($"File option value: {fileOptionValue?.FullName}");
});

Sekarang, mari kita gunakan CommandLineConfiguration untuk menangkap output:

StringWriter output = new();
CommandLineConfiguration configuration = new(rootCommand)
{
    Output = output,
    Error = TextWriter.Null
};

configuration.Parse("-h").Invoke();
Debug.Assert(output.ToString().Contains("Configuration sample"));

EnablePosixBundling

Bundling opsi dengan karakter tunggal diaktifkan secara default, tetapi Anda dapat menonaktifkannya dengan mengatur properti System.CommandLine.CommandLineConfiguration.EnablePosixBundling ke false.

Waktu Tunggu Penghentian Proses

Batas waktu penghentian proses dapat dikonfigurasi melalui System.CommandLine.CommandLineConfiguration.ProcessTerminationTimeout properti . Nilai defaultnya adalah 2 detik.

ResponseFileTokenReplacer

File respons diaktifkan secara default, tetapi Anda dapat menonaktifkannya dengan mengatur System.CommandLine.CommandLineConfiguration.ResponseFileTokenReplacer properti ke null. Anda juga dapat menyediakan implementasi kustom untuk menyesuaikan bagaimana file respons diproses.

EnableDefaultExceptionHandler

Secara default, semua pengecualian yang tidak tertangani yang dilemparkan selama pemanggilan perintah ditangkap dan dilaporkan kepada pengguna. Perilaku ini dapat dinonaktifkan dengan mengatur properti ke System.CommandLine.CommandLineConfiguration.EnableDefaultExceptionHandlerfalse. Ini berguna ketika Anda ingin menangani pengecualian dengan cara kustom, seperti mencatatnya atau memberikan pengalaman pengguna yang berbeda.

Kelas turunan

System.CommandLine.CommandLineConfiguration tidak disegel, sehingga Anda dapat memperolehnya untuk menambahkan properti atau metode kustom. Ini berguna ketika Anda ingin menyediakan opsi konfigurasi tambahan khusus untuk aplikasi Anda.

Lihat juga