Я ищу синтаксический анализатор аргументов командной строки, например "Анализатор командной строки" из http://www.sellsbrothers.com/tools/Genghis/ .
Особенности, которые я ищу:
- Автоматическое создание использования
- Должен иметь возможность проверить обязательные и необязательные параметры
- Параметры должны поддерживать IEnumerable с поддержкой разделителя
- Должен поддерживать параметры флага
- Было бы неплохо поддерживать такие параметры комбинирования, как "/ fx" == "/ f / x"
- Было бы неплохо не использовать пробел после параметра, такого как "/ftest.txt" == "/ f test.txt"
PS: «Парсер командной строки» довольно хорош, мне очень нравится его дизайн, но нет документации, нет новых обновлений, и я не мог понять, что делать, например, как проверить необходимые параметры.
c#
.net
command-line
arguments
доктор злой
источник
источник
Ответы:
Моя любимая сторонняя библиотека синтаксического анализа командной строки: анализатор командной строки, и я предполагаю, что это та самая вы говорите. Самый последний выпуск был выпущен менее 2 месяцев назад, и есть регулярные коммиты. Если вы хотите более зрелое предложение, вы можете проверить консольную библиотеку в монопроекте (извините, я не могу найти прямую ссылку на пространство имен на данный момент, но это часть монофреймворка)
источник
Взгляните на ndesk.options.
Теперь он называется Mono.Options .
источник
Популярный и довольно полный синтаксический анализатор командной строки C - это GNU getopt . Он был портирован (или клонирован) для C # /. Net несколько раз. Некоторые из них включают:
Сделайте ваш выбор! Есть несколько других, и Google может рассказать вам о них,
источник
К сожалению, нет встроенной поддержки, позволяющей справиться с этим стандартным способом. Вы изучали PowerShell? Бьюсь об заклад, в этой оболочке есть класс, который делает именно то, что вы хотите, или что-то подобное.
источник
Редактировать: как указывает fatcat1111, эта функция не поставлялась с окончательной версией .net 4.0.
В C # 4.0 есть неплохой вариант. Возможно, пока не очень полезно, но вы можете подумать о том, чтобы посмотреть на что-то, что упростит переход к встроенному, когда он выйдет. Барт Де Смет рассказал об этом в своем блоге B #
источник
Я предлагаю NDesk.Options
Смотри сюда:
Лучший способ разобрать аргументы командной строки в C #?
источник
Учтите, что как только вы начнете использовать этот синтаксический анализатор, вам придется либо поддерживать его самостоятельно, либо зависеть от кого-то другого, который будет поддерживать его за вас. Возможно, вам лучше написать свое собственное, исходя из ваших самых важных и непосредственных требований. Я обнаружил, что для создания довольно сложного синтаксического анализа командной строки для большинства консольных приложений, над которыми я работал, не требуется слишком много работы.
Я также обнаружил, что, когда синтаксический анализ становится слишком сложным, возможно, пора прекратить использование командной строки.
источник
Держу пари, это не совсем то, что вы ищете, но:
У кого-то здесь была эта проблема, и его первой мыслью было «Эй, у ocaml есть неплохой!», И он быстро перенес ее на F #.
источник
Я использую парсер из поваренной книги C # 3.0.
Все примеры из этой книги можно скачать здесь: http://examples.oreilly.com/9780596516109/
Поищите «Аргументы», и вы их найдете. Вы должны внести небольшие изменения в код, чтобы перенести это из всего этого в свой собственный класс, но это не большая проблема.
Он поддерживает все ваши точки, кроме двух последних (параметр, объединяющий и отсутствующий пробел).
источник
Библиотека BizArk содержит синтаксический анализатор командной строки.
По сути, вы просто создаете класс, наследуемый от CmdLineObject, добавляете свойства, которые вы хотите заполнить из командной строки, добавляете CmdLineArgAttribute к свойствам, а затем вызываете Initialize в своей программе. Он также поддерживает аргументы URL ClickOnce!
Особенности (с сайта) ...
источник
Я поклонник переноса C # на OptParse, встроенную библиотеку на Python. Он довольно прост в использовании по сравнению с большинством других предложений здесь и содержит ряд полезных функций в дополнение к простому автоматическому синтаксическому анализу.
источник
Вам может понравиться мой единственный Rug.Cmd
Простой в использовании и расширяемый анализатор аргументов командной строки. Дескрипторы: Bool, Plus / Minus, String, String List, CSV, Enumeration.
Встроенный в '/?' режим помощи.
Встроенный '/ ??' и режимы генератора документов '/? D'.
static void Main(string[] args) { // create the argument parser ArgumentParser parser = new ArgumentParser("ArgumentExample", "Example of argument parsing"); // create the argument for a string StringArgument StringArg = new StringArgument("String", "Example string argument", "This argument demonstrates string arguments"); // add the argument to the parser parser.Add("/", "String", StringArg); // parse arguemnts parser.Parse(args); // did the parser detect a /? argument if (parser.HelpMode == false) { // was the string argument defined if (StringArg.Defined == true) { // write its value RC.WriteLine("String argument was defined"); RC.WriteLine(StringArg.Value); } } }
Изменить: это мой проект, и поэтому этот ответ не следует рассматривать как одобрение третьей стороны. Тем не менее, я использую его для каждой программы на основе командной строки, которую я пишу, это открытый исходный код, и я надеюсь, что другие могут извлечь из него пользу.
источник