Библиотека GetOpt для C # - PullRequest
       47

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

28 голосов
/ 05 октября 2008

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

Ответы [ 8 ]

30 голосов
/ 12 ноября 2009

Мигель де Икаса бредит по поводу Mono.Options . Вы можете использовать пакет nuget или просто скопировать один исходный файл C # в свой проект.

9 голосов
/ 05 ноября 2008

Вот реализация .NET getopt: http://www.codeplex.com/getopt

2 голосов
/ 15 сентября 2009

для потомков:

CommandParser - еще один с лицензией BSD

2 голосов
/ 05 октября 2008

Здесь - это то, что я написал, оно работает довольно хорошо и имеет довольно много функций для небольшого количества кода. Это не getopts однако, но это может удовлетворить ваши потребности.

Не стесняйтесь задавать вопросы.

1 голос
/ 06 октября 2008

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

1 голос
/ 05 октября 2008

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

0 голосов
/ 30 октября 2017

Мой друг предложил 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);
            }
        }
    }
}

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

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

0 голосов
/ 30 января 2012

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

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

...