在构建接受参数的控制台应用程序时,可以使用传递给Main的参数(string[] args)。

在过去,我只是简单地索引/循环该数组,并做了一些正则表达式来提取值。然而,当命令变得更加复杂时,解析就会变得非常糟糕。

我感兴趣的是:

你使用的库 你使用的模式

假设命令总是遵循常见的标准,比如这里回答的。


当前回答

我以前写过一个c#命令行参数解析器。网址:http://www.codeplex.com/CommandLineArguments

其他回答

我建议使用开源库CSharpOptParse。它解析命令行,并将用户定义的. net对象与命令行输入结合起来。在编写c#控制台应用程序时,我总是使用这个库。

看起来每个人都有自己的宠物命令行解析器,我最好也添加我的:)。

http://bizark.codeplex.com/

这个库包含一个命令行解析器,它将使用命令行中的值初始化一个类。它有很多功能(我已经建立了很多年了)。

从文档中…

怪诞框架中的命令行解析具有以下关键特性:

Automatic initialization: Class properties are automatically set based on the command-line arguments. Default properties: Send in a value without specifying the property name. Value conversion: Uses the powerful ConvertEx class also included in BizArk to convert values to the proper type. Boolean flags: Flags can be specified by simply using the argument (ex, /b for true and /b- for false) or by adding the value true/false, yes/no, etc. Argument arrays: Simply add multiple values after the command-line name to set a property that is defined as an array. Ex, /x 1 2 3 will populate x with the array { 1, 2, 3 } (assuming x is defined as an array of integers). Command-line aliases: A property can support multiple command-line aliases for it. For example, Help uses the alias ?. Partial name recognition: You don’t need to spell out the full name or alias, just spell enough for the parser to disambiguate the property/alias from the others. Supports ClickOnce: Can initialize properties even when they are specified as the query string in a URL for ClickOnce deployed applications. The command-line initialization method will detect if it is running as ClickOnce or not so your code doesn’t need to change when using it. Automatically creates /? help: This includes nice formatting that takes into account the width of the console. Load/Save command-line arguments to a file: This is especially useful if you have multiple large, complex sets of command-line arguments that you want to run multiple times.

你可能会喜欢我的地毯。Cmd

易于使用和扩展的命令行参数解析器。句柄:Bool,加/减,字符串,字符串列表,CSV,枚举。

内置/?帮助模式。

内置/??'和'/?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);
        }
    }
}

编辑:这是我的项目,因此这个答案不应该被视为来自第三方的认可。也就是说,我确实在我编写的每个基于命令行的程序中使用它,它是开源的,我希望其他人可以从中受益。

Powershell Commandlets。

powershell根据命令行中指定的属性进行解析,支持验证、参数集、流水线、错误报告、帮助,最好的是返回。net对象供其他命令行使用。

我发现了一些有用的入门链接:

快速入门教程 MSDN编程指南 MSDN上的Namespace引用

我以前写过一个c#命令行参数解析器。网址:http://www.codeplex.com/CommandLineArguments