TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.77K subscribers
Post #908 1.13K
День семьсот тридцать восьмой.
Парсер Командной Строки на .NET
Передача аргументов командной строки в приложение - очень распространённая задача. Вы можете вручную их разбирать, но, если у вас много параметров, это может быть утомительно и подвержено ошибкам.

CommandLineParser
Это библиотека с открытым исходным кодом, созданная Эриком Ньютоном и членами сообщества .NET. Он существует с 2005 года и его скачали более 26 миллионов раз! CommandLineParser «предлагает приложениям CLR чистый и лаконичный API для управления аргументами командной строки и связанными с этим задачами, такими как определение переключателей, обязательных и необязательных параметров и команд».

Вместо того, чтобы вручную анализировать массив строк args, вы можете просто определить класс, который будет анализироваться библиотекой, на основе набора атрибутов, которыми вы аннотируете класс.
using CommandLine;
public class CmdLineOpts {
[Value(index: 0, Required = true,
HelpText = "File path.")]
public string Path { get; set; }

[Option(shortName: 'c',
longName: "confidence", Required = false,
HelpText = "Minimum confidence.", Default = 0.9f)]
public float Confidence { get; set; }
}

Это практически всё, что требуется для использования этой библиотеки. ValueAttribute и OptionAttribute предоставляются пакетом. Здесь первый параметр обязательный, а второй необязательный, который можно передать через короткое -с или длинное --confidence имя. Использование:
using CommandLine;
static async Task<int> Main(string[] args) {
return await Parser.Default
.ParseArguments<CmdLineOpts>(args)
.MapResult(async (CmdLineOpts opts) => {
try {
//аргументы разобраны, используем их
return await AnalyzeFileAsync(
opts.Path, opts.Confidence);
}
catch {
Console.WriteLine("Error!");
return -1;
}
},
errs => Task.FromResult(-1));
}
Парсер автоматически разбирает аргументы. Более того, из подсказок в атрибутах свойств класса автоматически генерируется страница справки, которая выдаётся при возникновении ошибок или вызовом приложения с параметром --help.

Итого
Пакет NuGet CommandLineParser - очень мощный помощник, который упрощает часто повторяющуюся задачу разбора аргументов до простого декларативного подхода. Кроме того, он гораздо более гибкий, чем пример, продемонстрированный здесь. Вы можете найти его документацию на их странице GitHub Wiki.

Источник: https://devblogs.microsoft.com/pax-windows/command-line-parser-on-net5/
More from @netdeveloperdiary
  1. Oct 18, 2026День 2818. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  2. Oct 17, 2026День 2817. #ЧтоНовенького #VS Прекращаем Сборку После Первой Ошибки Мэдс Кристенсен продол…
  3. Oct 16, 2026День 2816. #Карьера #AI Станет ли ИИ-Кодинг Концом Программирования для Людей? Автор ориги…
  4. Oct 15, 2026Post #3374
  5. Oct 14, 2026Post #3373
  6. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →