Нужно написать консольное приложение на С#, чтобы при вводе команды run -h выводилась справка с описанием команд.
static void Main(string[] args)
{
string command = string.Empty;
if (args.Length != 0)
{
switch (args[0])
{
case "-h": help();
break;
}
}
}
private void run(string utilityName, string arguments)
{
try
{
clearOutput();
pr = new Process();
pr.StartInfo.FileName = utilityName;
pr.StartInfo.Arguments = arguments;
}
catch () {} // ошибки
}
public static help()
{
Console.WriteLine("-h help");
}
Ответ
Вручную аргументы командной строки парсить не надо. То, что вы напишете, практически наверняка будет будет обладать ограниченным функционалом и зоопарком багов. Не надо изобретать велосипед.
Если вам нужна работа с аргументами в более удобной форме, чем предоставленной string[] args в Main, Environment.CommandLine или Environment.GetCommandLineArgs, то вы можете воспользоваться одним из многочисленных пакетов с парсерами командной строки на NuGet. Они вам позволят интерпретировать аргументы как имена и значения, преобразуют типы значений, сгенерируют справку и т. п.
Любой парсер, который вы найдёте, будет выдавать пары аргумент-значение. Есть различия в поддерживаемом синтаксисе, типах аргументов, API (декларативные, императивные, ни рыба ни мясо), но базовый функцонал у всех единый.
Большой популярностью пользуется CommandLineParser, но я бы предостерёг от его использования: старая адекватная версия библиотеки заброшена и страдает от нескольких багов, новая версия переписана в совершенно упоротом стиле, неподдерживаема, и светлого будущего не видать. Список популярных библиотек:
CommandLineParser — самая популярная, самая упоротая
FluentCommandLineParser — другая популярная
PowerArgs — ещё одна популярная
System.CommandLine — часть Core FX Lab от Microsoft, кандидат на включение в дотнет перенесена в архив Core FX Lab от Microsoft
CommandLineUtils — изначально часть Microsoft ASP.NET MVC, сейчас поддерживается другим разрабом
Всё, что вы найдёте на NuGet
Одни библиотеки ожидают от вас классов с атрибутами на свойствах, другие конфига, построенного с помощью fluent интерфейса, но в любом случае это будет сделать проще, чем изобрести велосипед, и вы получите более широкий функционал: генерацию справки, валидацию аргументов, строгую типизацию и т. п.
Комментариев нет:
Отправить комментарий