Подтвердить что ты не робот

Библиотека GetOpt для С#

Я ищу библиотеку getopt для С#. До сих пор я нашел несколько (phpguru, XGetOptCS, getoptfordotnet), но они больше похожи на незавершенные попытки, которые поддерживают только часть C getopt. Есть ли полная реализация getopt С#?

4b9b3361

Ответ 5

Это не getopt, но вы можете попробовать NConsoler. Он использует атрибуты для определения аргументов и действий.

Ответ 6

Проект Mono (или, скорее, был) основан на атрибутах, но в последний раз, когда я его проверил, он был отмечен как устаревший. Но поскольку он с открытым исходным кодом, вы можете извлечь код и использовать его самостоятельно.

Ответ 7

Для записи NUnit включает простой однофакторный синтаксический анализатор командной строки в src\ClientUtilities\util\CommandLineOptions.cs (см. пример использования в ConsoleRunner.cs и Runner.cs, расположенные под src\ConsoleRunner\nunit-console). Сам файл не содержит никакой информации о лицензировании, а ссылка в ее "восходящий поток" кажется мертвой, поэтому ее правовой статус неопределен.

Парсер поддерживает именованные параметры флага (например, /verbose), именованные параметры со значениями (например, /filename:bar.txt) и неназванные параметры, то есть в стиле Windows Scripting Host интерпретирует их. Опции могут иметь префикс /, - и --.

Ответ 8

Мой друг предложил docopt.net, библиотека анализа аргументов командной строки, основанная на библиотеке docopt для Node.JS. Он очень прост в использовании, но расширен и разбирает аргументы на основе строки справки, которую вы пишете.

Вот пример кода:

using System;
using DocoptNet;

namespace MyProgram
{
    static class Program
    {
        static void Main(string[] args)
        {
            // Usage string
            string usage = @"This program does this thing.

Usage:
  program set <something>
  program do <something> [-o <optionalthing>]
  program do <something> [somethingelse]";

            try
            {
                var arguments = new Docopt().Apply(usage, args, version: "My program v0.1.0", exit: false);
                foreach(var argument in arguments)
                    Console.WriteLine("{0} = {1}", argument.Key, argument.Value);
            }
            catch(Exception ex)
            {
                //Parser errors are thrown as exceptions.
                Console.WriteLine(ex.Message);
            }
        }
    }
}

Вы можете найти документацию для него (включая его формат сообщений справки) как в первой ссылке, так и здесь.

Надеюсь, это поможет кому-то!