При создании консольных приложений, которые принимают параметры, вы можете использовать переданные аргументы Main(string[] args)
.
В прошлом я просто индексировал / зацикливал этот массив и делал несколько регулярных выражений для извлечения значений. Однако, когда команды становятся более сложными, анализ может стать довольно уродливым.
Итак, я заинтересован в:
- Библиотеки, которые вы используете
- Шаблоны, которые вы используете
Предположим, что команды всегда придерживаются общих стандартов, таких как ответы здесь .
c#
.net
command-line-arguments
Пол Стовелл
источник
источник
Ответы:
Я настоятельно рекомендую использовать NDesk.Options ( Документация ) и / или Mono.Options (один и тот же API, другое пространство имен). Пример из документации :
источник
git checkout master
), или их аргументы не являются гибкими (т. Е. Не поддерживают--foo 123
=--foo=123
=-f 123
=,-f=123
а также-v -h
=-vh
).Мне очень нравится библиотека анализатора командной строки ( http://commandline.codeplex.com/ ). У него очень простой и элегантный способ настройки параметров с помощью атрибутов:
источник
--recursive
.Библиотека WPA TestApi поставляется с одним из лучших синтаксических анализаторов командной строки для разработки на C #. Я настоятельно рекомендую изучить это из блога Иво Манолова об API :
источник
Посмотрите на http://github.com/mono/mono/tree/master/mcs/class/Mono.Options/
источник
Похоже, у каждого есть свои любимые парсеры командной строки, думаю, мне лучше добавить и мой :).
http://bizark.codeplex.com/
Эта библиотека содержит анализатор командной строки , который инициализирует класс значениями из командной строки. У этого есть тонна особенностей (я строил это в течение многих лет).
Из документации ...
Синтаксический анализ командной строки в среде BizArk имеет следующие ключевые особенности:
источник
Я написал анализатор аргументов командной строки C # некоторое время назад. Его по адресу: http://www.codeplex.com/CommandLineArguments
источник
CLAP (анализатор аргументов командной строки) имеет удобный API и прекрасно документирован. Вы делаете метод, комментируя параметры. https://github.com/adrianaisemberg/CLAP
источник
myapp myverb -argname argvalue
(должен иметь-argname
) илиmyapp -help
(обычно--help
).Есть множество решений этой проблемы. Для полноты и предоставления альтернативы, если кто-то захочет, я добавляю этот ответ для двух полезных классов в моей библиотеке кода Google. .
Первый - это ArgumentList, который отвечает только за анализ параметров командной строки. Он собирает пары «имя-значение», определенные переключателями «/ x: y» или «-x = y», а также собирает список «неназванных» записей. Это основное использование обсуждается здесь , посмотреть класс здесь .
Вторая часть этого - CommandInterpreter, который создает полнофункциональное приложение командной строки из вашего .Net-класса. Например:
С помощью приведенного выше примера кода вы можете выполнить следующее:
-- или --
Это так просто или так сложно, как вам нужно. Вы можете просмотреть исходный код , просмотреть справку или загрузить двоичный файл .
источник
Мне нравится этот , потому что вы можете «определить правила» для аргументов, необходимых или нет, ...
или если вы парень из Unix, то вам может понравиться порт GNU Getopt .NET .
источник
Тебе может понравиться мой Rug.Cmd
Простой в использовании и расширяемый парсер аргументов командной строки. Ручки: Bool, Plus / Minus, String, String List, CSV, Перечисление.
Встроенный в /? справочный режим.
Построен в '/ ??' и '/? D' режимы генератора документов.
Редактировать: это мой проект, и поэтому этот ответ не должен рассматриваться как одобрение третьей стороны. Тем не менее, я использую его для каждой программы на основе командной строки, которую я пишу, это с открытым исходным кодом, и я надеюсь, что другие могут извлечь из этого пользу.
источник
Парсер аргументов командной строки находится по адресу http://www.codeplex.com/commonlibrarynet
Он может анализировать аргументы, используя
1. атрибуты
2. явные вызовы
3. одну строку из нескольких аргументов ИЛИ строковый массив
Он может обрабатывать такие вещи, как следующие:
- config : Qa - начальная дата : $ { today } - регион : 'Нью-Йорк' Настройки01
Это очень просто в использовании.
источник
Это обработчик, который я написал на основе Novell
Options
класса .Этот предназначен для консольных приложений, которые выполняют
while (input !="exit")
цикл стилей, например, интерактивной консоли, такой как FTP-консоль.Пример использования:
И источник:
источник
Мой личный фаворит - http://www.codeproject.com/KB/recipes/plossum_commandline.aspx Питера Палотаса:
источник
Недавно я наткнулся на реализацию синтаксического анализа командной строки FubuCore, которая мне действительно нравится по следующим причинам:
Ниже приведен простой пример того, как это использовать. Чтобы проиллюстрировать использование, я написал простую утилиту, которая имеет две команды: - add (добавляет объект в список - объект состоит из имени (строки), значения (int) и логического флага) - list (lists все добавленные в данный момент объекты)
Прежде всего, я написал класс Command для команды add:
Эта команда принимает экземпляр CommandInput в качестве параметра, поэтому я определю это следующим образом:
Следующая команда - это список, который реализован следующим образом:
Команда 'list' не принимает параметров, поэтому для этого я определил класс NullInput:
Теперь осталось только подключить это в методе Main (), например так:
Программа работает должным образом, выводит подсказки о правильном использовании в случае, если какие-либо команды недопустимы:
И пример использования для команды «add»:
источник
Командлеты Powershell.
Разбор выполняется с помощью powershell на основе атрибутов, указанных в командлетах, поддержки проверок, наборов параметров, конвейеризации, отчетов об ошибках, справки и, что лучше всего, возврата объектов .NET для использования в других командлетах.
Несколько ссылок, которые я нашел полезными для начала:
источник
C # CLI - очень простая библиотека синтаксического анализа аргументов командной строки, которую я написал. Это хорошо документировано и с открытым исходным кодом.
источник
Readme.mkd
Файл вDocumentation
папке).Genghis Command Line Parser может быть немного устаревшим, но он очень функциональный и хорошо работает для меня.
источник
Я бы предложил библиотеку с открытым исходным кодом CSharpOptParse . Он анализирует командную строку и гидратирует определенный пользователем объект .NET с помощью ввода из командной строки. Я всегда обращаюсь к этой библиотеке при написании консольного приложения на C #.
источник
Пожалуйста, используйте .net порт API Apache Commons Cli. Это прекрасно работает.
http://sourceforge.net/projects/dotnetcli/
и оригинальный API для концепций и введения
http://commons.apache.org/cli/
источник
Очень простой и удобный в использовании специальный класс для разбора командной строки, который поддерживает аргументы по умолчанию.
источник