Я ищу библиотеку getopt для С#. До сих пор я нашел несколько (phpguru, XGetOptCS, getoptfordotnet), но они больше похожи на незавершенные попытки, которые поддерживают только часть C getopt. Есть ли полная реализация getopt С#?
Библиотека GetOpt для С#
Ответ 1
Вот .NET-реализация getopt: http://www.codeplex.com/getopt
Ответ 2
Мигель де Икаса рейвы о Mono.Options. Вы можете использовать пакет nuget или просто скопировать один исходный файл С# в ваш проект.
Ответ 3
Не стесняйтесь задавать несколько вопросов.
Ответ 4
Для потомков:
CommandParser - это еще один с лицензией BSD
Ответ 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);
}
}
}
}
Вы можете найти документацию для него (включая его формат сообщений справки) как в первой ссылке, так и здесь.
Надеюсь, это поможет кому-то!