Console.Net parses Subcommands, Options and Arguments of the Command line. It uses a XML File to setup the Command and Options structure and wire up the classes which handles them.
Here is an early Example of the XML Configuration file:
<?xml version="1.0" encoding="utf-8" ?>
<cli>
<command handler="Burgos.RootCommandHandler,Burgos">
<title></title>
<description></description>
<commands necessary="false">
<command name="Clone" value="clone,cl" >
<options>
<option name="verbosity" value="-v,--verbosity" />
</options>
<arguments>
<argument name="PathToRepo" validatortype="regex">
<regex value="" />
</argument>
</arguments>
</command>
<command name="fire" value="cipher">
</command>
</commands>
<arguments>
<argument name="PathToRepository" validatortype="regex">
<regex value="" />
</argument>
</arguments>
<options>
<option name="version" value="--version">
</option>
<option name="fire" value="-m">
</option>
</options>
<globaloptions>
<option name="verbosity" value="-v,-verbosity"/>
</globaloptions>
</command>
</cli>