<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>Command Line Parser Library</title><link>http://www.codeplex.com/commandline/Project/ProjectRss.aspx</link><description>Allows easy command line parsing through a simple API. The user input has great degree of freedom &amp;#40;short and long options names, grouped options&amp;#41;. Define a class to receive parsed input, apply attr...</description><item><title>Updated Wiki: sample application</title><link>http://www.codeplex.com/commandline/Wiki/View.aspx?title=sample application&amp;version=8</link><description>&lt;div class="wikidoc"&gt;
This is the sample application that you can found in version &lt;a href="http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=20802" class="externalLink"&gt;1.4 stable&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;:&lt;br /&gt; &lt;br /&gt;&lt;div style="color:#000000;background-color:#FFFFFF;"&gt;&lt;pre&gt;
&lt;span style="color:#0000FF;"&gt;namespace&lt;/span&gt; SampleApp
{
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; System;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; System.Collections.Generic;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; CommandLine;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; CommandLine.Text;
    &lt;span style="color:#0000FF;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;sealed&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;class&lt;/span&gt; Program
    {
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;static&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;readonly&lt;/span&gt; HeadingInfo headingInfo = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; HeadingInfo(&lt;span style="color:#A31515;"&gt;&amp;quot;sampleapp&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;1.2.5&amp;quot;&lt;/span&gt;);
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;sealed&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;class&lt;/span&gt; Options
        {
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;r&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;read&amp;quot;&lt;/span&gt;,
                    Required = &lt;span style="color:#0000FF;"&gt;true&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Input file with data to process.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; InputFile = String.Empty;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;w&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;write&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Output file with processed data (otherwise standard output).&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; OutputFile = String.Empty;
            [Option(&lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;calculate&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Add results in bottom of tabular data.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;bool&lt;/span&gt; Calculate = &lt;span style="color:#0000FF;"&gt;false&lt;/span&gt;;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;v&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Verbose level. Range: from 0 to 2.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;int&lt;/span&gt; VerboseLevel = 0;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;i&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;,
                   HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;If file has errors don't stop processing.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;bool&lt;/span&gt; IgnoreErrors = &lt;span style="color:#0000FF;"&gt;false&lt;/span&gt;;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;j&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;jump&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Data processing start offset.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;double&lt;/span&gt; StartOffset = 0;
            [ValueList(&lt;span style="color:#0000FF;"&gt;typeof&lt;/span&gt;(List&amp;lt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&amp;gt;))]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; IList&amp;lt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&amp;gt; DefinitionFiles = &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;;
            [HelpOption(
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Dispaly this help screen.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; GetUsage()
            {
                HelpText help = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; HelpText(Program.headingInfo);
                help.Copyright = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; CopyrightInfo(&lt;span style="color:#A31515;"&gt;&amp;quot;Giacomo Stelluti Scala&amp;quot;&lt;/span&gt;, 2005, 2007);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This is free software. You may redistribute copies of it under the terms of&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;the MIT License &amp;lt;http://www.opensource.org/licenses/mit-license.php&amp;gt;.&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Usage: SampleApp -rMyData.in -wMyData.out --calculate&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#A31515;"&gt;&amp;quot;       SampleApp -rMyData.in -i -j{0} file0.def file1.def&amp;quot;&lt;/span&gt;, 9.7));
                help.AddOptions(&lt;span style="color:#0000FF;"&gt;this&lt;/span&gt;);
                &lt;span style="color:#0000FF;"&gt;return&lt;/span&gt; help;
            }
        }
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;static&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;[] args)
        {
            Options options = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; Options();
            ICommandLineParser parser = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; CommandLineParser();
            &lt;span style="color:#0000FF;"&gt;if&lt;/span&gt; (parser.ParseArguments(args, options, Console.Error))
            {
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Verbose Level: {0}&amp;quot;&lt;/span&gt;, (options.VerboseLevel &amp;lt; 0 || options.VerboseLevel &amp;gt; 2) ? &lt;span style="color:#A31515;"&gt;&amp;quot;#invalid value#&amp;quot;&lt;/span&gt; : options.VerboseLevel.ToString());
                Console.WriteLine();
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Reading input file: {0} ...&amp;quot;&lt;/span&gt;, options.InputFile);
                &lt;span style="color:#0000FF;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; defFile &lt;span style="color:#0000FF;"&gt;in&lt;/span&gt; options.DefinitionFiles)
                    Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  using definition file: {0}&amp;quot;&lt;/span&gt;, defFile);
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  start offset: {0}&amp;quot;&lt;/span&gt;, options.StartOffset);
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  tabular data computation: {0}&amp;quot;&lt;/span&gt;, options.Calculate.ToString().ToLowerInvariant());
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  on errors: {0}&amp;quot;&lt;/span&gt;, options.IgnoreErrors ? &lt;span style="color:#A31515;"&gt;&amp;quot;continue&amp;quot;&lt;/span&gt; : &lt;span style="color:#A31515;"&gt;&amp;quot;stop processing&amp;quot;&lt;/span&gt;);
                Console.WriteLine();
                &lt;span style="color:#0000FF;"&gt;if&lt;/span&gt; (options.OutputFile.Length &amp;gt; 0)
                {
                    headingInfo.WriteMessage(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#A31515;"&gt;&amp;quot;Writing elaborated data: {0} ...&amp;quot;&lt;/span&gt;, options.OutputFile));
                }
                &lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;
                {
                    headingInfo.WriteMessage(&lt;span style="color:#A31515;"&gt;&amp;quot;Elaborated data:&amp;quot;&lt;/span&gt;);
                    Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;[...]&amp;quot;&lt;/span&gt;);
                }
                Environment.Exit(0);
            }
            &lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;
            {
                Environment.Exit(1);
            }
        }
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sun, 04 Jan 2009 18:43:41 GMT</pubDate><guid isPermaLink="false">Updated Wiki: sample application 20090104064341P</guid></item><item><title>Updated Release: 1.4 stable (Dec 20, 2008)</title><link>http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=20802</link><description>&lt;div&gt;
&lt;h2&gt;
&lt;u&gt;Updates&lt;/u&gt; 
&lt;/h2&gt;There aren't really big differences from previous &lt;i&gt;Release Candidate 0&lt;/i&gt; version. Anyway this library has demonstrated its stability in various &lt;i&gt;closed source&lt;/i&gt; projects. I'm talking in projects that I developed for clients during &lt;i&gt;ordinary&lt;/i&gt; work. If you use this project for personal use, in commercial or open source projects please let me know (and let me know also if I can publish your name in the home of this project). &lt;b&gt;Use it, there's no fee of any kind!&lt;/b&gt;&lt;br&gt;In the stable release I've done:&lt;br&gt;&lt;ul&gt;
&lt;li&gt;some minor internal code refactoring&lt;/li&gt;&lt;li&gt;reorganized the source tree&lt;/li&gt;&lt;li&gt;made the API more compatible with components container&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;Containers Compatibility&lt;/u&gt;
&lt;/h2&gt;Components containers are the future (and for a growing numbers of developers - &lt;u&gt;the present&lt;/u&gt;) of the foundation of a solid software architecture. For this reason you should stop using the &lt;b&gt;Parser&lt;/b&gt; type, instead use the new type &lt;b&gt;CommandLineParser&lt;/b&gt; declaring it using the &lt;b&gt;ICommandLineParser&lt;/b&gt; interface.&lt;br&gt;With this architectural choice, the use with a component container you should be simplified. Follows sample &lt;i&gt;pseudo-code&lt;/i&gt;.&lt;br&gt; &lt;br&gt;&lt;div style="color:#000000;background-color:#FFFFFF"&gt;&lt;pre&gt;
&lt;span style="color:#008000"&gt;/* Initialization Code */&lt;/span&gt;
MyContainer container = &lt;span style="color:#0000FF"&gt;new&lt;/span&gt; MyContainer();
container.AddComponent&amp;lt;ICommandLineParser, CommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmdline.parser&amp;quot;&lt;/span&gt;, typre);
&lt;span style="color:#008000"&gt;/* [... omissis ...] */&lt;/span&gt;
&lt;span style="color:#008000"&gt;/* Command Line Processing Code */&lt;/span&gt;
parser = container.Resolve&amp;lt;ICommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmdline.parser&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;&lt;/div&gt; &lt;br&gt;This is not the place to go deeper in this argument, please read my &lt;a href="http://gsscoder.blogspot.com/2008/10/decouple-software-in-services.html"&gt;blog article&lt;span&gt;&lt;/span&gt;&lt;/a&gt; about it (and more).&lt;br&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:18:14 GMT</pubDate><guid isPermaLink="false">Updated Release: 1.4 stable (Dec 20, 2008) 20081227011814P</guid></item><item><title>Released: 1.4 stable (Dec 20, 2008)</title><link>http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=20802</link><description>&lt;div&gt;
&lt;h2&gt;
&lt;u&gt;Updates&lt;/u&gt; 
&lt;/h2&gt;There aren't really big differences from previous &lt;i&gt;Release Candidate 0&lt;/i&gt; version. Anyway this library has demonstrated its stability in various &lt;i&gt;closed source&lt;/i&gt; projects. I'm talking in projects that I developed for clients during &lt;i&gt;ordinary&lt;/i&gt; work. If you use this project for personal use, in commercial or open source projects please let me know (and let me know also if I can publish your name in the home of this project). &lt;b&gt;Use it, there's no fee of any kind!&lt;/b&gt;&lt;br&gt;In the stable release I've done:&lt;br&gt;&lt;ul&gt;
&lt;li&gt;some minor internal code refactoring&lt;/li&gt;&lt;li&gt;reorganized the source tree&lt;/li&gt;&lt;li&gt;made the API more compatible with components container&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;Containers Compatibility&lt;/u&gt;
&lt;/h2&gt;Components containers are the future (and for a growing numbers of developers - &lt;u&gt;the present&lt;/u&gt;) of the foundation of a solid software architecture. For this reason you should stop using the &lt;b&gt;Parser&lt;/b&gt; type, instead use the new type &lt;b&gt;CommandLineParser&lt;/b&gt; declaring it using the &lt;b&gt;ICommandLineParser&lt;/b&gt; interface.&lt;br&gt;With this architectural choice, the use with a component container you should be simplified. Follows sample &lt;i&gt;pseudo-code&lt;/i&gt;.&lt;br&gt; &lt;br&gt;&lt;div style="color:#000000;background-color:#FFFFFF"&gt;&lt;pre&gt;
&lt;span style="color:#008000"&gt;/* Initialization Code */&lt;/span&gt;
MyContainer container = &lt;span style="color:#0000FF"&gt;new&lt;/span&gt; MyContainer();
container.AddComponent&amp;lt;ICommandLineParser, CommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmdline.parser&amp;quot;&lt;/span&gt;, typre);
&lt;span style="color:#008000"&gt;/* [... omissis ...] */&lt;/span&gt;
&lt;span style="color:#008000"&gt;/* Command Line Processing Code */&lt;/span&gt;
parser = container.Resolve&amp;lt;ICommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmdline.parser&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;&lt;/div&gt; &lt;br&gt;This is not the place to go deeper in this argument, please read my &lt;a href="http://gsscoder.blogspot.com/2008/10/decouple-software-in-services.html"&gt;blog article&lt;span&gt;&lt;/span&gt;&lt;/a&gt; about it (and more).&lt;br&gt;
&lt;/div&gt;</description><author></author><pubDate>Sat, 27 Dec 2008 13:18:13 GMT</pubDate><guid isPermaLink="false">Released: 1.4 stable (Dec 20, 2008) 20081227011813P</guid></item><item><title>Updated Release: 1.4 stable (Dec 20, 2008)</title><link>http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=20802</link><description>&lt;div&gt;
&lt;h2&gt;
&lt;u&gt;Updates&lt;/u&gt; 
&lt;/h2&gt;There aren't really big differences from previous &lt;i&gt;Release Candidate 0&lt;/i&gt; version. Anyway this library has demonstrated its stability in various &lt;i&gt;closed source&lt;/i&gt; projects. I'm talking in projects that I developed for clients during &lt;i&gt;ordinary&lt;/i&gt; work. If you use this project for personal use, in commercial or open source projects please let me know (and let me know also if I can publish your name in the home of this project). &lt;b&gt;Use it, there's no fee of any kind!&lt;/b&gt;&lt;br&gt;In the stable release I've done:&lt;br&gt;&lt;ul&gt;
&lt;li&gt;some minor internal code refactoring&lt;/li&gt;&lt;li&gt;reorganized the source tree&lt;/li&gt;&lt;li&gt;made the API more compatible with components container&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;Containers Compatibility&lt;/u&gt;
&lt;/h2&gt;Components containers are the future (and for a growing numbers of developers - &lt;u&gt;the present&lt;/u&gt;) of the foundation of a solid software architecture. For this reason you should stop using the &lt;b&gt;Parser&lt;/b&gt; type, instead use the new type &lt;b&gt;CommandLineParser&lt;/b&gt; declaring it using the &lt;b&gt;ICommandLineParser&lt;/b&gt; interface.&lt;br&gt;With this architectural choice, the use with a component container you should be simplified. Follows sample &lt;i&gt;pseudo-code&lt;/i&gt;.&lt;br&gt; &lt;br&gt;&lt;div style="color:#000000;background-color:#FFFFFF"&gt;&lt;pre&gt;
&lt;span style="color:#008000"&gt;/* Initialization Code */&lt;/span&gt;
MyContainer container = &lt;span style="color:#0000FF"&gt;new&lt;/span&gt; MyContainer();
container.AddComponent&amp;lt;ICommandLineParser, CommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmd-line&amp;quot;&lt;/span&gt;, typre);
&lt;span style="color:#008000"&gt;/* [... omissis ...] */&lt;/span&gt;
&lt;span style="color:#008000"&gt;/* Command Line Processing Code */&lt;/span&gt;
parser = container.Resolve&amp;lt;ICommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmd-line&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;&lt;/div&gt; &lt;br&gt;This is not the place to go deeper in this argument, please read my &lt;a href="http://gsscoder.blogspot.com/2008/10/decouple-software-in-services.html"&gt;blog article&lt;span&gt;&lt;/span&gt;&lt;/a&gt; about it (and more).&lt;br&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:17:08 GMT</pubDate><guid isPermaLink="false">Updated Release: 1.4 stable (Dec 20, 2008) 20081227011708P</guid></item><item><title>Updated Release: 1.4 stable (Dec 20, 2008)</title><link>http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=20802</link><description>&lt;div&gt;
&lt;h2&gt;
&lt;u&gt;Updates&lt;/u&gt; 
&lt;/h2&gt;There aren't really big differences from previous &lt;i&gt;Release Candidate 0&lt;/i&gt; version. Anyway this library has demonstrated its stability in various &lt;i&gt;closed source&lt;/i&gt; projects. I'm talking in projects that I developed for clients during &lt;i&gt;ordinary&lt;/i&gt; work. If you use this project for personal use, in commercial or open source projects please let me know (and let me know also if I can publish your name in the home of this project). &lt;b&gt;Use it, there's no fee of any kind!&lt;/b&gt;&lt;br&gt;In the stable release I've done:&lt;br&gt;&lt;ul&gt;
&lt;li&gt;some minor internal code refactoring&lt;/li&gt;&lt;li&gt;reorganized the source tree&lt;/li&gt;&lt;li&gt;made the API more compatible with components container&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;Containers Compatibility&lt;/u&gt;
&lt;/h2&gt;Components containers are the future (and for a growing numbers of developers - &lt;u&gt;the present&lt;/u&gt;) of the foundation of a solid software architecture. For this reason you should stop using the &lt;b&gt;Parser&lt;/b&gt; type, instead use the new type &lt;b&gt;CommandLineParser&lt;/b&gt; declaring it using the &lt;b&gt;ICommandLineParser&lt;/b&gt; interface.&lt;br&gt;With this architectural choice, the use with a component container you should be simplified. Follows sample &lt;i&gt;pseudo-code&lt;/i&gt;.&lt;br&gt; &lt;br&gt;&lt;div style="color:#000000;background-color:#FFFFFF"&gt;&lt;pre&gt;
&lt;span style="color:#0000FF"&gt;class&lt;/span&gt; MyConsoleApp {
    &lt;span style="color:#008000"&gt;// Initialization Code&lt;/span&gt;
    MyContainer container = &lt;span style="color:#0000FF"&gt;new&lt;/span&gt; MyContainer();
    container.AddComponent&amp;lt;ICommandLineParser, CommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmd-line&amp;quot;&lt;/span&gt;, typre);
    &lt;span style="color:#008000"&gt;// [... omissis ...]&lt;/span&gt;
    &lt;span style="color:#008000"&gt;// Command Line Processing Code&lt;/span&gt;
    parser = container.Resolve&amp;lt;ICommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmd-line&amp;quot;&lt;/span&gt;);
}
&lt;/pre&gt;&lt;/div&gt; &lt;br&gt;This is not the place to go deeper in this argument, please read my &lt;a href="http://gsscoder.blogspot.com/2008/10/decouple-software-in-services.html"&gt;blog article&lt;span&gt;&lt;/span&gt;&lt;/a&gt; about it (and more).&lt;br&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:13:34 GMT</pubDate><guid isPermaLink="false">Updated Release: 1.4 stable (Dec 20, 2008) 20081227011334P</guid></item><item><title>Updated Release: 1.4 stable (Dec 20, 2008)</title><link>http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=20802</link><description>&lt;div&gt;
&lt;h2&gt;
&lt;u&gt;Updates&lt;/u&gt; 
&lt;/h2&gt;There aren't really big differences from previous &lt;i&gt;Release Candidate 0&lt;/i&gt; version. Anyway this library has demonstrated its stability in various &lt;i&gt;closed source&lt;/i&gt; projects. I'm talking in projects that I developed for clients during &lt;i&gt;ordinary&lt;/i&gt; work. If you use this project for personal use, in commercial or open source projects please let me know (and let me know also if I can publish your name in the home of this project). &lt;b&gt;Use it, there's no fee of any kind!&lt;/b&gt;&lt;br&gt;In the stable release I've done:&lt;br&gt;&lt;ul&gt;
&lt;li&gt;some minor internal code refactoring&lt;/li&gt;&lt;li&gt;reorganized the source tree&lt;/li&gt;&lt;li&gt;made the API more compatible with components container&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;Containers Compatibility&lt;/u&gt;
&lt;/h2&gt;Components containers are the future (and for a growing numbers of developers - &lt;u&gt;the present&lt;/u&gt;) of the foundation of a solid software architecture. For this reason you should stop using the &lt;b&gt;Parser&lt;/b&gt; type, instead use the new type &lt;b&gt;CommandLineParser&lt;/b&gt; declaring it using the &lt;b&gt;ICommandLineParser&lt;/b&gt; interface.&lt;br&gt;With this architectural choice, the use with a component container you should be simplified. Follows sample &lt;i&gt;pseudo-code&lt;/i&gt;.&lt;br&gt; &lt;br&gt;&lt;pre&gt;
{code:c#}
// Initialization Code
MyContainer container = new MyContainer();
container.AddComponent&amp;lt;ICommandLineParser, CommandLineParser&amp;gt;(&amp;quot;cmd-line&amp;quot;, typre);
 
// [... omissis ...]
 
// Command Line Processing Code
parser = container.Resolve&amp;lt;ICommandLineParser&amp;gt;(&amp;quot;cmd-line&amp;quot;);
{code:c#}
&lt;/pre&gt; &lt;br&gt;This is not the place to go deeper in this argument, please read my &lt;a href="http://gsscoder.blogspot.com/2008/10/decouple-software-in-services.html"&gt;blog article&lt;span&gt;&lt;/span&gt;&lt;/a&gt; about it (and more).&lt;br&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:11:19 GMT</pubDate><guid isPermaLink="false">Updated Release: 1.4 stable (Dec 20, 2008) 20081227011119P</guid></item><item><title>Updated Release: 1.4 stable (Dec 20, 2008)</title><link>http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=20802</link><description>&lt;div&gt;
&lt;h2&gt;
&lt;u&gt;Updates&lt;/u&gt; 
&lt;/h2&gt;There aren't really big differences from previous &lt;i&gt;Release Candidate 0&lt;/i&gt; version. Anyway this library has demonstrated its stability in various &lt;i&gt;closed source&lt;/i&gt; projects. I'm talking in projects that I developed for clients during &lt;i&gt;ordinary&lt;/i&gt; work. If you use this project for personal use, in commercial or open source projects please let me know (and let me know also if I can publish your name in the home of this project). &lt;b&gt;Use it, there's no fee of any kind!&lt;/b&gt;&lt;br&gt;In the stable release I've done:&lt;br&gt;&lt;ul&gt;
&lt;li&gt;some minor internal code refactoring&lt;/li&gt;&lt;li&gt;reorganized the source tree&lt;/li&gt;&lt;li&gt;made the API more compatible with components container&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;Containers Compatibility&lt;/u&gt;
&lt;/h2&gt;Components containers are the future (and for a growing numbers of developers - &lt;u&gt;the present&lt;/u&gt;) of the foundation of a solid software architecture. For this reason you should stop using the &lt;b&gt;Parser&lt;/b&gt; type, instead use the new type &lt;b&gt;CommandLineParser&lt;/b&gt; declaring it using the &lt;b&gt;ICommandLineParser&lt;/b&gt; interface.&lt;br&gt;With this architectural choice, the use with a component container you should be simplified. Follows sample &lt;i&gt;pseudo-code&lt;/i&gt;.&lt;br&gt; &lt;br&gt;&lt;div style="color:#000000;background-color:#FFFFFF"&gt;&lt;pre&gt;
&lt;span style="color:#008000"&gt;// Initialization Code&lt;/span&gt;
MyContainer container = &lt;span style="color:#0000FF"&gt;new&lt;/span&gt; MyContainer();
container.AddComponent&amp;lt;ICommandLineParser, CommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmd-line&amp;quot;&lt;/span&gt;, typre);
&lt;span style="color:#008000"&gt;// [... omissis ...]&lt;/span&gt;
&lt;span style="color:#008000"&gt;// Command Line Processing Code&lt;/span&gt;
parser = container.Resolve&amp;lt;ICommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmd-line&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;&lt;/div&gt;This is not the place to go deeper in this argument, please read my &lt;a href="http://gsscoder.blogspot.com/2008/10/decouple-software-in-services.html"&gt;blog article&lt;span&gt;&lt;/span&gt;&lt;/a&gt; about it (and more).&lt;br&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:10:13 GMT</pubDate><guid isPermaLink="false">Updated Release: 1.4 stable (Dec 20, 2008) 20081227011013P</guid></item><item><title>Updated Release: 1.4 stable (Dec 20, 2008)</title><link>http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=20802</link><description>&lt;div&gt;
&lt;h2&gt;
&lt;u&gt;Updates&lt;/u&gt; 
&lt;/h2&gt;There aren't really big differences from previous &lt;i&gt;Release Candidate 0&lt;/i&gt; version. Anyway this library has demonstrated its stability in various &lt;i&gt;closed source&lt;/i&gt; projects. I'm talking in projects that I developed for clients during &lt;i&gt;ordinary&lt;/i&gt; work. If you use this project for personal use, in commercial or open source projects please let me know (and let me know also if I can publish your name in the home of this project). &lt;b&gt;Use it, there's no fee of any kind!&lt;/b&gt;&lt;br&gt;In the stable release I've done:&lt;br&gt;&lt;ul&gt;
&lt;li&gt;some minor internal code refactoring&lt;/li&gt;&lt;li&gt;reorganized the source tree&lt;/li&gt;&lt;li&gt;made the API more compatible with components container&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;Containers Compatibility&lt;/u&gt;
&lt;/h2&gt;Components containers are the future (and for a growing numbers of developers - &lt;u&gt;the present&lt;/u&gt;) of the foundation of a solid software architecture. For this reason you should stop using the &lt;b&gt;Parser&lt;/b&gt; type, instead use the new type &lt;b&gt;CommandLineParser&lt;/b&gt; declaring it using the &lt;b&gt;ICommandLineParser&lt;/b&gt; interface.&lt;br&gt;With this architectural choice, the use with a component container you should be simplified. Follows sample &lt;i&gt;pseudo-code&lt;/i&gt;.&lt;br&gt; &lt;br&gt;&lt;div style="color:#000000;background-color:#FFFFFF"&gt;&lt;pre&gt;
&lt;span style="color:#008000"&gt;// Initialization Code&lt;/span&gt;
MyContainer container = &lt;span style="color:#0000FF"&gt;new&lt;/span&gt; MyContainer();
container.AddComponent&amp;lt;ICommandLineParser, CommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmd-line&amp;quot;&lt;/span&gt;, typre);
&lt;span style="color:#008000"&gt;// [... omissis ...]&lt;/span&gt;
&lt;span style="color:#008000"&gt;// Command Line Processing Code&lt;/span&gt;
parser = container.Resolve&amp;lt;ICommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmd-line&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;&lt;/div&gt;This is not the place to go deeper in this argument, please read my &lt;a href="http://gsscoder.blogspot.com/2008/10/decouple-software-in-services.html"&gt;blog article&lt;span&gt;&lt;/span&gt;&lt;/a&gt; about it (and more).&lt;br&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:09:32 GMT</pubDate><guid isPermaLink="false">Updated Release: 1.4 stable (Dec 20, 2008) 20081227010932P</guid></item><item><title>Updated Release: 1.4 stable (Dec 20, 2008)</title><link>http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=20802</link><description>&lt;div&gt;
&lt;h2&gt;
&lt;u&gt;Updates&lt;/u&gt; 
&lt;/h2&gt;There aren't really big differences from previous &lt;i&gt;Release Candidate 0&lt;/i&gt; version. Anyway this library has demonstrated its stability in various &lt;i&gt;closed source&lt;/i&gt; projects. I'm talking in projects that I developed for clients during &lt;i&gt;ordinary&lt;/i&gt; work. If you use this project for personal use, in commercial or open source projects please let me know (and let me know also if I can publish your name in the home of this project). &lt;b&gt;Use it, there's no fee of any kind!&lt;/b&gt;&lt;br&gt;In the stable release I've done:&lt;br&gt;&lt;ul&gt;
&lt;li&gt;some minor internal code refactoring&lt;/li&gt;&lt;li&gt;reorganized the source tree&lt;/li&gt;&lt;li&gt;made the API more compatible with components container&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;Containers Compatibility&lt;/u&gt;
&lt;/h2&gt;Components containers are the future (and for a growing numbers of developers - &lt;u&gt;the present&lt;/u&gt;) of the foundation of a solid software architecture. For this reason you should stop using the &lt;b&gt;Parser&lt;/b&gt; type, instead use the new type &lt;b&gt;CommandLineParser&lt;/b&gt; declaring it using the &lt;b&gt;ICommandLineParser&lt;/b&gt; interface.&lt;br&gt;With this architectural choice, the use with a component container you should be simplified. Follows sample &lt;i&gt;pseudo-code&lt;/i&gt;.&lt;br&gt; &lt;br&gt;&lt;div style="color:#000000;background-color:#FFFFFF"&gt;&lt;pre&gt;
&lt;span style="color:#008000"&gt;// Initialization Code&lt;/span&gt;
MyContainer container = &lt;span style="color:#0000FF"&gt;new&lt;/span&gt; MyContainer();
container.AddComponent&amp;lt;ICommandLineParser, CommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmd-line&amp;quot;&lt;/span&gt;, typre);
[...]
&lt;span style="color:#008000"&gt;// Command Line Processing Code&lt;/span&gt;
parser = container.Resolve&amp;lt;ICommandLineParser&amp;gt;(&lt;span style="color:#A31515"&gt;&amp;quot;cmd-line&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;&lt;/div&gt;This is not the place to go deeper in this argument, please read my &lt;a href="http://gsscoder.blogspot.com/2008/10/decouple-software-in-services.html"&gt;blog article&lt;span&gt;&lt;/span&gt;&lt;/a&gt; about it (and more).&lt;br&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:07:37 GMT</pubDate><guid isPermaLink="false">Updated Release: 1.4 stable (Dec 20, 2008) 20081227010737P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/commandline/Wiki/View.aspx?title=Home&amp;version=58</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
&lt;u&gt;Introduction&lt;/u&gt;
&lt;/h2&gt;The Command Line Parser Library offers to CLR applications a simple programming interface for manipulating command line input. This library allows you to display an help screen with a good degree of customization. The API  keeps on its shoulders everything boring to code (&lt;i&gt;or I hope so, if not suggestions are always welcome!&lt;/i&gt;).&lt;br /&gt;&lt;h2&gt;
&lt;u&gt;How it works?&lt;/u&gt;
&lt;/h2&gt;The command line input, read from the standard entry point as string array, is then pushed in an instance of custom type decorated with library attributes. You just create this class with &lt;u&gt;one field&lt;/u&gt; for &lt;u&gt;each option value&lt;/u&gt; you want to make persistent (and a &lt;u&gt;special field&lt;/u&gt; for &lt;u&gt;non-option values&lt;/u&gt;). &lt;b&gt;Rules&lt;/b&gt; about &lt;u&gt;command line options&lt;/u&gt; are &lt;i&gt;engraved&lt;/i&gt; in your custom type from &lt;b&gt;library attributes&lt;/b&gt;. The &lt;b&gt;library source code&lt;/b&gt; contains a &lt;a href="http://www.codeplex.com/commandline/Wiki/View.aspx?title=sample%20application&amp;amp;referringTitle=Home"&gt;sample application&lt;/a&gt; that will clarify all told up to this moment.&lt;br /&gt;&lt;h2&gt;
&lt;u&gt;Source or Binary?&lt;/u&gt;
&lt;/h2&gt;The project is entirely written in C# and is also thought to be included in another project (&lt;i&gt;in this case the language used must match&lt;/i&gt;). If you reference the library as binary DLL file (&lt;i&gt;obviously from any .NET language&lt;/i&gt;) you can take advantage (depending on your IDE) of &lt;b&gt;documentation comments attached to any publicly visible members&lt;/b&gt;.&lt;br /&gt;&lt;h2&gt;
&lt;u&gt;Input Specification&lt;/u&gt;
&lt;/h2&gt;User can specify options with a high degree of freedom.&lt;br /&gt;This &lt;a href="http://www.gnu.org/software/libc/manual/html_node/Getopt.html" class="externalLink"&gt;Unix-like&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; &lt;u&gt;specification&lt;/u&gt; survives from years and years...&lt;br /&gt;However, you can read all details about it here: &lt;a href="http://www.codeplex.com/commandline/Wiki/View.aspx?title=Input%20Specification&amp;amp;referringTitle=Home"&gt;Input Specification&lt;/a&gt;.&lt;br /&gt;&lt;h2&gt;
&lt;u&gt;Reason to Use&lt;/u&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;See this my old blog post of &lt;a href="http://gsscoder.blogspot.com/2007/06/add-command-line-parsing-to-your.html" class="externalLink"&gt;30 June 2007&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;Features&lt;/u&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Simple API&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Compatibility&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;.NET Framework 2.0+ &lt;/li&gt;&lt;li&gt;Mono Profile 2.0+&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Tested&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Each release is tested with &lt;u&gt;Mono on Linux&lt;/u&gt;.&lt;/li&gt;&lt;li&gt;Contains unit tests from first release.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;Contacts&lt;/u&gt;
&lt;/h2&gt;For go deeper on the &lt;u&gt;usage&lt;/u&gt;, for &lt;u&gt;bug reports&lt;/u&gt; and &lt;u&gt;features requests&lt;/u&gt;:&lt;br /&gt;&lt;a href="http://gsscoder.blogspot.com/" class="externalLink"&gt;Author's Blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="mailto:gsscoder@ymail.com" class="externalLink"&gt;Author's E-Mail&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;And remember to take advantage of all greats CodePlex features.&lt;/i&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:06:45 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20081227010645P</guid></item><item><title>Updated Wiki: sample application</title><link>http://www.codeplex.com/commandline/Wiki/View.aspx?title=sample application&amp;version=7</link><description>&lt;div class="wikidoc"&gt;
This is the sample application that you can found in version &lt;a href="http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=20802" class="externalLink"&gt;1.4 stable&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;:&lt;br /&gt; &lt;br /&gt;&lt;div style="color:#000000;background-color:#FFFFFF;"&gt;&lt;pre&gt;
&lt;span style="color:#0000FF;"&gt;namespace&lt;/span&gt; SampleApp
{
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; System;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; System.Collections.Generic;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; CommandLine;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; CommandLine.Text;
    &lt;span style="color:#0000FF;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;sealed&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;class&lt;/span&gt; Program
    {
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;static&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;readonly&lt;/span&gt; HeadingInfo headingInfo = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; HeadingInfo(&lt;span style="color:#A31515;"&gt;&amp;quot;sampleapp&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;1.2.5&amp;quot;&lt;/span&gt;);
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;sealed&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;class&lt;/span&gt; Options
        {
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;r&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;read&amp;quot;&lt;/span&gt;,
                    Required = &lt;span style="color:#0000FF;"&gt;true&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Input file with data to process.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; InputFile = String.Empty;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;w&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;write&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Output file with processed data (otherwise standard output).&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; OutputFile = String.Empty;
            [Option(&lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;calculate&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Add results in bottom of tabular data.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;bool&lt;/span&gt; Calculate = &lt;span style="color:#0000FF;"&gt;false&lt;/span&gt;;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;v&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Verbose level. Range: from 0 to 2.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;int&lt;/span&gt; VerboseLevel = 0;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;i&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;,
                   HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;If file has errors don't stop processing.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;bool&lt;/span&gt; IgnoreErrors = &lt;span style="color:#0000FF;"&gt;false&lt;/span&gt;;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;j&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;jump&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Data processing start offset.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;double&lt;/span&gt; StartOffset = 0;
            [ValueList(&lt;span style="color:#0000FF;"&gt;typeof&lt;/span&gt;(List&amp;lt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&amp;gt;))]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; IList&amp;lt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&amp;gt; DefinitionFiles = &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;;
            [HelpOption(
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Dispaly this help screen.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; GetUsage()
            {
                HelpText help = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; HelpText(Program.headingInfo);
                help.Copyright = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; CopyrightInfo(&lt;span style="color:#A31515;"&gt;&amp;quot;Giacomo Stelluti Scala&amp;quot;&lt;/span&gt;, 2005, 2007);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This is free software. You may redistribute copies of it under the terms of&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;the MIT License &amp;lt;http://www.opensource.org/licenses/mit-license.php&amp;gt;.&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Usage: SampleApp -rMyData.in -wMyData.out --calculate&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#A31515;"&gt;&amp;quot;       SampleApp -rMyData.in -i -j{0} file0.def file1.def&amp;quot;&lt;/span&gt;, 9.7));
                help.AddOptions(&lt;span style="color:#0000FF;"&gt;this&lt;/span&gt;);
                &lt;span style="color:#0000FF;"&gt;return&lt;/span&gt; help;
            }
        }
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;static&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;[] args)
        {
            Options options = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; Options();
            ICommandLineParser parser = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; CommandLineParser();
            &lt;span style="color:#0000FF;"&gt;if&lt;/span&gt; (parser.ParseArguments(args, options, Console.Error))
            {
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Verbose Level: {0}&amp;quot;&lt;/span&gt;, (options.VerboseLevel &amp;lt; 0 || options.VerboseLevel &amp;gt; 2) ? &lt;span style="color:#A31515;"&gt;&amp;quot;#invalid value#&amp;quot;&lt;/span&gt; : options.VerboseLevel.ToString());
                Console.WriteLine();
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Reading input file: {0} ...&amp;quot;&lt;/span&gt;, options.InputFile);
                &lt;span style="color:#0000FF;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; defFile &lt;span style="color:#0000FF;"&gt;in&lt;/span&gt; options.DefinitionFiles)
                    Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  using definition file: {0}&amp;quot;&lt;/span&gt;, defFile);
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  start offset: {0}&amp;quot;&lt;/span&gt;, options.StartOffset);
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  tabular data computation: {0}&amp;quot;&lt;/span&gt;, options.Calculate.ToString().ToLowerInvariant());
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  on errors: {0}&amp;quot;&lt;/span&gt;, options.IgnoreErrors ? &lt;span style="color:#A31515;"&gt;&amp;quot;continue&amp;quot;&lt;/span&gt; : &lt;span style="color:#A31515;"&gt;&amp;quot;stop processing&amp;quot;&lt;/span&gt;);
                Console.WriteLine();
                &lt;span style="color:#0000FF;"&gt;if&lt;/span&gt; (options.OutputFile.Length &amp;gt; 0)
                {
                    headingInfo.WriteMessage(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#A31515;"&gt;&amp;quot;Writing elaborated data: {0} ...&amp;quot;&lt;/span&gt;, options.OutputFile));
                }
                &lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;
                {
                    headingInfo.WriteMessage(&lt;span style="color:#A31515;"&gt;&amp;quot;Elaborated data:&amp;quot;&lt;/span&gt;);
                    Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;[...]&amp;quot;&lt;/span&gt;);
                }
                Environment.Exit(0);
            }
            &lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;
            {
                Environment.Exit(1);
            }
        }
    }
}
&lt;span style="color:#0000FF;"&gt;namespace&lt;/span&gt; SampleApp
{
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; System;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; System.Collections.Generic;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; CommandLine;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; CommandLine.Text;
    &lt;span style="color:#0000FF;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;sealed&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;class&lt;/span&gt; Program
    {
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;static&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;readonly&lt;/span&gt; HeadingInfo headingInfo = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; HeadingInfo(&lt;span style="color:#A31515;"&gt;&amp;quot;sampleapp&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;1.2.5&amp;quot;&lt;/span&gt;);
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;sealed&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;class&lt;/span&gt; Options
        {
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;r&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;read&amp;quot;&lt;/span&gt;,
                    Required = &lt;span style="color:#0000FF;"&gt;true&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Input file with data to process.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; InputFile = String.Empty;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;w&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;write&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Output file with processed data (otherwise standard output).&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; OutputFile = String.Empty;
            [Option(&lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;calculate&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Add results in bottom of tabular data.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;bool&lt;/span&gt; Calculate = &lt;span style="color:#0000FF;"&gt;false&lt;/span&gt;;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;v&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Verbose level. Range: from 0 to 2.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;int&lt;/span&gt; VerboseLevel = 0;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;i&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;,
                   HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;If file has errors don't stop processing.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;bool&lt;/span&gt; IgnoreErrors = &lt;span style="color:#0000FF;"&gt;false&lt;/span&gt;;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;j&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;jump&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Data processing start offset.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;double&lt;/span&gt; StartOffset = 0;
            [ValueList(&lt;span style="color:#0000FF;"&gt;typeof&lt;/span&gt;(List&amp;lt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&amp;gt;))]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; IList&amp;lt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&amp;gt; DefinitionFiles = &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;;
            [HelpOption(
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Dispaly this help screen.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; GetUsage()
            {
                HelpText help = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; HelpText(Program.headingInfo);
                help.Copyright = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; CopyrightInfo(&lt;span style="color:#A31515;"&gt;&amp;quot;Giacomo Stelluti Scala&amp;quot;&lt;/span&gt;, 2005, 2007);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This is free software. You may redistribute copies of it under the terms of&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;the MIT License &amp;lt;http://www.opensource.org/licenses/mit-license.php&amp;gt;.&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Usage: SampleApp -rMyData.in -wMyData.out --calculate&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#A31515;"&gt;&amp;quot;       SampleApp -rMyData.in -i -j{0} file0.def file1.def&amp;quot;&lt;/span&gt;, 9.7));
                help.AddOptions(&lt;span style="color:#0000FF;"&gt;this&lt;/span&gt;);
                &lt;span style="color:#0000FF;"&gt;return&lt;/span&gt; help;
            }
        }
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;static&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;[] args)
        {
            Options options = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; Options();
            ICommandLineParser parser = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; CommandLineParser();
            &lt;span style="color:#0000FF;"&gt;if&lt;/span&gt; (parser.ParseArguments(args, options, Console.Error))
            {
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Verbose Level: {0}&amp;quot;&lt;/span&gt;, (options.VerboseLevel &amp;lt; 0 || options.VerboseLevel &amp;gt; 2) ? &lt;span style="color:#A31515;"&gt;&amp;quot;#invalid value#&amp;quot;&lt;/span&gt; : options.VerboseLevel.ToString());
                Console.WriteLine();
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Reading input file: {0} ...&amp;quot;&lt;/span&gt;, options.InputFile);
                &lt;span style="color:#0000FF;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; defFile &lt;span style="color:#0000FF;"&gt;in&lt;/span&gt; options.DefinitionFiles)
                    Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  using definition file: {0}&amp;quot;&lt;/span&gt;, defFile);
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  start offset: {0}&amp;quot;&lt;/span&gt;, options.StartOffset);
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  tabular data computation: {0}&amp;quot;&lt;/span&gt;, options.Calculate.ToString().ToLowerInvariant());
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  on errors: {0}&amp;quot;&lt;/span&gt;, options.IgnoreErrors ? &lt;span style="color:#A31515;"&gt;&amp;quot;continue&amp;quot;&lt;/span&gt; : &lt;span style="color:#A31515;"&gt;&amp;quot;stop processing&amp;quot;&lt;/span&gt;);
                Console.WriteLine();
                &lt;span style="color:#0000FF;"&gt;if&lt;/span&gt; (options.OutputFile.Length &amp;gt; 0)
                {
                    headingInfo.WriteMessage(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#A31515;"&gt;&amp;quot;Writing elaborated data: {0} ...&amp;quot;&lt;/span&gt;, options.OutputFile));
                }
                &lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;
                {
                    headingInfo.WriteMessage(&lt;span style="color:#A31515;"&gt;&amp;quot;Elaborated data:&amp;quot;&lt;/span&gt;);
                    Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;[...]&amp;quot;&lt;/span&gt;);
                }
                Environment.Exit(0);
            }
            &lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;
            {
                Environment.Exit(1);
            }
        }
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:05:38 GMT</pubDate><guid isPermaLink="false">Updated Wiki: sample application 20081227010538P</guid></item><item><title>Updated Wiki: sample-app.cs</title><link>http://www.codeplex.com/commandline/Wiki/View.aspx?title=sample-app.cs&amp;version=5</link><description>&lt;div class="wikidoc"&gt;
&lt;div style="color:#000000;background-color:#FFFFFF;"&gt;&lt;pre&gt;
&lt;span style="color:#0000FF;"&gt;namespace&lt;/span&gt; SampleApp
{
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; System;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; System.Collections.Generic;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; CommandLine;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; CommandLine.Text;
    &lt;span style="color:#0000FF;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;sealed&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;class&lt;/span&gt; Program
    {
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;static&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;readonly&lt;/span&gt; HeadingInfo headingInfo = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; HeadingInfo(&lt;span style="color:#A31515;"&gt;&amp;quot;sampleapp&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;1.2.5&amp;quot;&lt;/span&gt;);
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;sealed&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;class&lt;/span&gt; Options
        {
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;r&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;read&amp;quot;&lt;/span&gt;,
                    Required = &lt;span style="color:#0000FF;"&gt;true&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Input file with data to process.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; InputFile = String.Empty;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;w&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;write&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Output file with processed data (otherwise standard output).&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; OutputFile = String.Empty;
            [Option(&lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;calculate&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Add results in bottom of tabular data.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;bool&lt;/span&gt; Calculate = &lt;span style="color:#0000FF;"&gt;false&lt;/span&gt;;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;v&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Verbose level. Range: from 0 to 2.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;int&lt;/span&gt; VerboseLevel = 0;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;i&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;,
                   HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;If file has errors don't stop processing.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;bool&lt;/span&gt; IgnoreErrors = &lt;span style="color:#0000FF;"&gt;false&lt;/span&gt;;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;j&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;jump&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Data processing start offset.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;double&lt;/span&gt; StartOffset = 0;
            [ValueList(&lt;span style="color:#0000FF;"&gt;typeof&lt;/span&gt;(Liststring))]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; IList&amp;lt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&amp;gt; DefinitionFiles = &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;;
            [HelpOption(
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Dispaly this help screen.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; GetUsage()
            {
                HelpText help = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; HelpText(Program.headingInfo);
                help.Copyright = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; CopyrightInfo(&lt;span style="color:#A31515;"&gt;&amp;quot;Giacomo Stelluti Scala&amp;quot;&lt;/span&gt;, 2005, 2007);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This is free software. You may redistribute copies of it under the terms of&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;the MIT License &amp;lt;http://www.opensource.org/licenses/mit-license.php&amp;gt;.&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Usage: SampleApp -rMyData.in -wMyData.out --calculate&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#A31515;"&gt;&amp;quot;       SampleApp -rMyData.in -i -j{0} file0.def file1.def&amp;quot;&lt;/span&gt;, 9.7));
                help.AddOptions(&lt;span style="color:#0000FF;"&gt;this&lt;/span&gt;);
                &lt;span style="color:#0000FF;"&gt;return&lt;/span&gt; help;
            }
        }
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;static&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;[] args)
        {
            Options options = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; Options();
            ICommandLineParser parser = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; CommandLineParser();
            &lt;span style="color:#0000FF;"&gt;if&lt;/span&gt; (parser.ParseArguments(args, options, Console.Error))
            {
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Verbose Level: {0}&amp;quot;&lt;/span&gt;, (options.VerboseLevel &amp;lt; 0 || options.VerboseLevel &amp;gt; 2) ? &lt;span style="color:#A31515;"&gt;&amp;quot;#invalid value#&amp;quot;&lt;/span&gt; : options.VerboseLevel.ToString());
                Console.WriteLine();
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Reading input file: {0} ...&amp;quot;&lt;/span&gt;, options.InputFile);
                &lt;span style="color:#0000FF;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; defFile &lt;span style="color:#0000FF;"&gt;in&lt;/span&gt; options.DefinitionFiles)
                    Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  using definition file: {0}&amp;quot;&lt;/span&gt;, defFile);
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  start offset: {0}&amp;quot;&lt;/span&gt;, options.StartOffset);
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  tabular data computation: {0}&amp;quot;&lt;/span&gt;, options.Calculate.ToString().ToLowerInvariant());
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  on errors: {0}&amp;quot;&lt;/span&gt;, options.IgnoreErrors ? &lt;span style="color:#A31515;"&gt;&amp;quot;continue&amp;quot;&lt;/span&gt; : &lt;span style="color:#A31515;"&gt;&amp;quot;stop processing&amp;quot;&lt;/span&gt;);
                Console.WriteLine();
                &lt;span style="color:#0000FF;"&gt;if&lt;/span&gt; (options.OutputFile.Length &amp;gt; 0)
                {
                    headingInfo.WriteMessage(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#A31515;"&gt;&amp;quot;Writing elaborated data: {0} ...&amp;quot;&lt;/span&gt;, options.OutputFile));
                }
                &lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;
                {
                    headingInfo.WriteMessage(&lt;span style="color:#A31515;"&gt;&amp;quot;Elaborated data:&amp;quot;&lt;/span&gt;);
                    Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;[...]&amp;quot;&lt;/span&gt;);
                }
                Environment.Exit(0);
            }
            &lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;
            {
                Environment.Exit(1);
            }
        }
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:04:44 GMT</pubDate><guid isPermaLink="false">Updated Wiki: sample-app.cs 20081227010444P</guid></item><item><title>Updated Wiki: sample-app.cs</title><link>http://www.codeplex.com/commandline/Wiki/View.aspx?title=sample-app.cs&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
&lt;div style="color:#000000;background-color:#FFFFFF;"&gt;&lt;pre&gt;
&lt;span style="color:#0000FF;"&gt;namespace&lt;/span&gt; SampleApp
{
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; System;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; System.Collections.Generic;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; CommandLine;
    &lt;span style="color:#0000FF;"&gt;using&lt;/span&gt; CommandLine.Text;
    &lt;span style="color:#0000FF;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;sealed&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;class&lt;/span&gt; Program
    {
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;static&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;readonly&lt;/span&gt; HeadingInfo headingInfo = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; HeadingInfo(&lt;span style="color:#A31515;"&gt;&amp;quot;sampleapp&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;1.2.5&amp;quot;&lt;/span&gt;);
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;sealed&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;class&lt;/span&gt; Options
        {
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;r&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;read&amp;quot;&lt;/span&gt;,
                    Required = &lt;span style="color:#0000FF;"&gt;true&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Input file with data to process.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; InputFile = String.Empty;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;w&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;write&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Output file with processed data (otherwise standard output).&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; OutputFile = String.Empty;
            [Option(&lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;calculate&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Add results in bottom of tabular data.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;bool&lt;/span&gt; Calculate = &lt;span style="color:#0000FF;"&gt;false&lt;/span&gt;;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;v&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Verbose level. Range: from 0 to 2.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;int&lt;/span&gt; VerboseLevel = 0;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;i&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;,
                   HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;If file has errors don't stop processing.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;bool&lt;/span&gt; IgnoreErrors = &lt;span style="color:#0000FF;"&gt;false&lt;/span&gt;;
            [Option(&lt;span style="color:#A31515;"&gt;&amp;quot;j&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;jump&amp;quot;&lt;/span&gt;,
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Data processing start offset.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;double&lt;/span&gt; StartOffset = 0;
            [ValueList(&lt;span style="color:#0000FF;"&gt;typeof&lt;/span&gt;(Liststring))]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; IList&amp;lt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&amp;gt; DefinitionFiles = &lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;;
            [HelpOption(
                    HelpText = &lt;span style="color:#A31515;"&gt;&amp;quot;Dispaly this help screen.&amp;quot;&lt;/span&gt;)]
            &lt;span style="color:#0000FF;"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; GetUsage()
            {
                HelpText help = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; HelpText(Program.headingInfo);
                help.Copyright = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; CopyrightInfo(&lt;span style="color:#A31515;"&gt;&amp;quot;Giacomo Stelluti Scala&amp;quot;&lt;/span&gt;, 2005, 2007);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This is free software. You may redistribute copies of it under the terms of&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;the MIT License &amp;lt;http://www.opensource.org/licenses/mit-license.php&amp;gt;.&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Usage: SampleApp -rMyData.in -wMyData.out --calculate&amp;quot;&lt;/span&gt;);
                help.AddPreOptionsLine(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#A31515;"&gt;&amp;quot;       SampleApp -rMyData.in -i -j{0} file0.def file1.def&amp;quot;&lt;/span&gt;, 9.7));
                help.AddOptions(&lt;span style="color:#0000FF;"&gt;this&lt;/span&gt;);
                &lt;span style="color:#0000FF;"&gt;return&lt;/span&gt; help;
            }
        }
        &lt;span style="color:#0000FF;"&gt;private&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;static&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;[] args)
        {
            Options options = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; Options();
            ICommandLineParser parser = &lt;span style="color:#0000FF;"&gt;new&lt;/span&gt; CommandLineParser();
            &lt;span style="color:#0000FF;"&gt;if&lt;/span&gt; (parser.ParseArguments(args, options, Console.Error))
            {
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Verbose Level: {0}&amp;quot;&lt;/span&gt;, (options.VerboseLevel &amp;lt; 0 || options.VerboseLevel &amp;gt; 2) ? &lt;span style="color:#A31515;"&gt;&amp;quot;#invalid value#&amp;quot;&lt;/span&gt; : options.VerboseLevel.ToString());
                Console.WriteLine();
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Reading input file: {0} ...&amp;quot;&lt;/span&gt;, options.InputFile);
                &lt;span style="color:#0000FF;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt; defFile &lt;span style="color:#0000FF;"&gt;in&lt;/span&gt; options.DefinitionFiles)
                    Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  using definition file: {0}&amp;quot;&lt;/span&gt;, defFile);
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  start offset: {0}&amp;quot;&lt;/span&gt;, options.StartOffset);
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  tabular data computation: {0}&amp;quot;&lt;/span&gt;, options.Calculate.ToString().ToLowerInvariant());
                Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;  on errors: {0}&amp;quot;&lt;/span&gt;, options.IgnoreErrors ? &lt;span style="color:#A31515;"&gt;&amp;quot;continue&amp;quot;&lt;/span&gt; : &lt;span style="color:#A31515;"&gt;&amp;quot;stop processing&amp;quot;&lt;/span&gt;);
                Console.WriteLine();
                &lt;span style="color:#0000FF;"&gt;if&lt;/span&gt; (options.OutputFile.Length &amp;gt; 0)
                {
                    headingInfo.WriteMessage(&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#A31515;"&gt;&amp;quot;Writing elaborated data: {0} ...&amp;quot;&lt;/span&gt;, options.OutputFile));
                }
                &lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;
                {
                    headingInfo.WriteMessage(&lt;span style="color:#A31515;"&gt;&amp;quot;Elaborated data:&amp;quot;&lt;/span&gt;);
                    Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;[...]&amp;quot;&lt;/span&gt;);
                }
                Environment.Exit(0);
            }
            &lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;
            {
                Environment.Exit(1);
            }
        }
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:04:10 GMT</pubDate><guid isPermaLink="false">Updated Wiki: sample-app.cs 20081227010410P</guid></item><item><title>Updated Wiki: sample-app.cs</title><link>http://www.codeplex.com/commandline/Wiki/View.aspx?title=sample-app.cs&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
{code:c#}namespace SampleApp
{
    using System;
    using System.Collections.Generic;
    using CommandLine;
    using CommandLine.Text;
 
    internal sealed class Program
    {
        private static readonly HeadingInfo headingInfo = new HeadingInfo(&amp;quot;sampleapp&amp;quot;, &amp;quot;1.2.5&amp;quot;);
 
        private sealed class Options
        {
            [Option(&amp;quot;r&amp;quot;, &amp;quot;read&amp;quot;,
                    Required = true,
                    HelpText = &amp;quot;Input file with data to process.&amp;quot;)]
            public string InputFile = String.Empty;
 
            [Option(&amp;quot;w&amp;quot;, &amp;quot;write&amp;quot;,
                    HelpText = &amp;quot;Output file with processed data (otherwise standard output).&amp;quot;)]
            public string OutputFile = String.Empty;
 
            [Option(null, &amp;quot;calculate&amp;quot;,
                    HelpText = &amp;quot;Add results in bottom of tabular data.&amp;quot;)]
            public bool Calculate = false;
 
            [Option(&amp;quot;v&amp;quot;, null,
                    HelpText = &amp;quot;Verbose level. Range: from 0 to 2.&amp;quot;)]
            public int VerboseLevel = 0;
 
            [Option(&amp;quot;i&amp;quot;, null,
                   HelpText = &amp;quot;If file has errors don't stop processing.&amp;quot;)]
            public bool IgnoreErrors = false;
 
            [Option(&amp;quot;j&amp;quot;, &amp;quot;jump&amp;quot;,
                    HelpText = &amp;quot;Data processing start offset.&amp;quot;)]
            public double StartOffset = 0;
 
            [ValueList(typeof(Liststring))]
            public IList&amp;lt;string&amp;gt; DefinitionFiles = null;
 
            [HelpOption(
                    HelpText = &amp;quot;Dispaly this help screen.&amp;quot;)]
            public string GetUsage()
            {
                HelpText help = new HelpText(Program.headingInfo);
                help.Copyright = new CopyrightInfo(&amp;quot;Giacomo Stelluti Scala&amp;quot;, 2005, 2007);
                help.AddPreOptionsLine(&amp;quot;This is free software. You may redistribute copies of it under the terms of&amp;quot;);
                help.AddPreOptionsLine(&amp;quot;the MIT License &amp;lt;http://www.opensource.org/licenses/mit-license.php&amp;gt;.&amp;quot;);
                help.AddPreOptionsLine(&amp;quot;Usage: SampleApp -rMyData.in -wMyData.out --calculate&amp;quot;);
                help.AddPreOptionsLine(string.Format(&amp;quot;       SampleApp -rMyData.in -i -j{0} file0.def file1.def&amp;quot;, 9.7));
                help.AddOptions(this);
                return help;
            }
        }
 
        private static void Main(string[] args)
        {
            Options options = new Options();
            ICommandLineParser parser = new CommandLineParser();
            if (parser.ParseArguments(args, options, Console.Error))
            {
                Console.WriteLine(&amp;quot;Verbose Level: {0}&amp;quot;, (options.VerboseLevel &amp;lt; 0 || options.VerboseLevel &amp;gt; 2) ? &amp;quot;#invalid value#&amp;quot; : options.VerboseLevel.ToString());
                Console.WriteLine();
                Console.WriteLine(&amp;quot;Reading input file: {0} ...&amp;quot;, options.InputFile);
                foreach (string defFile in options.DefinitionFiles)
                    Console.WriteLine(&amp;quot;  using definition file: {0}&amp;quot;, defFile);
                Console.WriteLine(&amp;quot;  start offset: {0}&amp;quot;, options.StartOffset);
                Console.WriteLine(&amp;quot;  tabular data computation: {0}&amp;quot;, options.Calculate.ToString().ToLowerInvariant());
                Console.WriteLine(&amp;quot;  on errors: {0}&amp;quot;, options.IgnoreErrors ? &amp;quot;continue&amp;quot; : &amp;quot;stop processing&amp;quot;);
                Console.WriteLine();
                if (options.OutputFile.Length &amp;gt; 0)
                {
                    headingInfo.WriteMessage(string.Format(&amp;quot;Writing elaborated data: {0} ...&amp;quot;, options.OutputFile));
                }
                else
                {
                    headingInfo.WriteMessage(&amp;quot;Elaborated data:&amp;quot;);
                    Console.WriteLine(&amp;quot;[...]&amp;quot;);
                }
                Environment.Exit(0);
            }
            else
            {
                Environment.Exit(1);
            }
        }
    }
}

&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:03:40 GMT</pubDate><guid isPermaLink="false">Updated Wiki: sample-app.cs 20081227010340P</guid></item><item><title>Updated Wiki: sample-app.cs</title><link>http://www.codeplex.com/commandline/Wiki/View.aspx?title=sample-app.cs&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;pre&gt;
namespace SampleApp
{
    using System;
    using System.Collections.Generic;
    using CommandLine;
    using CommandLine.Text;
 
    internal sealed class Program
    {
        private static readonly HeadingInfo headingInfo = new HeadingInfo(&amp;quot;sampleapp&amp;quot;, &amp;quot;1.2.5&amp;quot;);
 
        private sealed class Options
        {
            [Option(&amp;quot;r&amp;quot;, &amp;quot;read&amp;quot;,
                    Required = true,
                    HelpText = &amp;quot;Input file with data to process.&amp;quot;)]
            public string InputFile = String.Empty;
 
            [Option(&amp;quot;w&amp;quot;, &amp;quot;write&amp;quot;,
                    HelpText = &amp;quot;Output file with processed data (otherwise standard output).&amp;quot;)]
            public string OutputFile = String.Empty;
 
            [Option(null, &amp;quot;calculate&amp;quot;,
                    HelpText = &amp;quot;Add results in bottom of tabular data.&amp;quot;)]
            public bool Calculate = false;
 
            [Option(&amp;quot;v&amp;quot;, null,
                    HelpText = &amp;quot;Verbose level. Range: from 0 to 2.&amp;quot;)]
            public int VerboseLevel = 0;
 
            [Option(&amp;quot;i&amp;quot;, null,
                   HelpText = &amp;quot;If file has errors don't stop processing.&amp;quot;)]
            public bool IgnoreErrors = false;
 
            [Option(&amp;quot;j&amp;quot;, &amp;quot;jump&amp;quot;,
                    HelpText = &amp;quot;Data processing start offset.&amp;quot;)]
            public double StartOffset = 0;
 
            [ValueList(typeof(Liststring))]
            public IList&amp;lt;string&amp;gt; DefinitionFiles = null;
 
            [HelpOption(
                    HelpText = &amp;quot;Dispaly this help screen.&amp;quot;)]
            public string GetUsage()
            {
                HelpText help = new HelpText(Program.headingInfo);
                help.Copyright = new CopyrightInfo(&amp;quot;Giacomo Stelluti Scala&amp;quot;, 2005, 2007);
                help.AddPreOptionsLine(&amp;quot;This is free software. You may redistribute copies of it under the terms of&amp;quot;);
                help.AddPreOptionsLine(&amp;quot;the MIT License &amp;lt;http://www.opensource.org/licenses/mit-license.php&amp;gt;.&amp;quot;);
                help.AddPreOptionsLine(&amp;quot;Usage: SampleApp -rMyData.in -wMyData.out --calculate&amp;quot;);
                help.AddPreOptionsLine(string.Format(&amp;quot;       SampleApp -rMyData.in -i -j{0} file0.def file1.def&amp;quot;, 9.7));
                help.AddOptions(this);
                return help;
            }
        }
 
        private static void Main(string[] args)
        {
            Options options = new Options();
            ICommandLineParser parser = new CommandLineParser();
            if (parser.ParseArguments(args, options, Console.Error))
            {
                Console.WriteLine(&amp;quot;Verbose Level: {0}&amp;quot;, (options.VerboseLevel &amp;lt; 0 || options.VerboseLevel &amp;gt; 2) ? &amp;quot;#invalid value#&amp;quot; : options.VerboseLevel.ToString());
                Console.WriteLine();
                Console.WriteLine(&amp;quot;Reading input file: {0} ...&amp;quot;, options.InputFile);
                foreach (string defFile in options.DefinitionFiles)
                    Console.WriteLine(&amp;quot;  using definition file: {0}&amp;quot;, defFile);
                Console.WriteLine(&amp;quot;  start offset: {0}&amp;quot;, options.StartOffset);
                Console.WriteLine(&amp;quot;  tabular data computation: {0}&amp;quot;, options.Calculate.ToString().ToLowerInvariant());
                Console.WriteLine(&amp;quot;  on errors: {0}&amp;quot;, options.IgnoreErrors ? &amp;quot;continue&amp;quot; : &amp;quot;stop processing&amp;quot;);
                Console.WriteLine();
                if (options.OutputFile.Length &amp;gt; 0)
                {
                    headingInfo.WriteMessage(string.Format(&amp;quot;Writing elaborated data: {0} ...&amp;quot;, options.OutputFile));
                }
                else
                {
                    headingInfo.WriteMessage(&amp;quot;Elaborated data:&amp;quot;);
                    Console.WriteLine(&amp;quot;[...]&amp;quot;);
                }
                Environment.Exit(0);
            }
            else
            {
                Environment.Exit(1);
            }
        }
    }
}
&lt;/pre&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:01:25 GMT</pubDate><guid isPermaLink="false">Updated Wiki: sample-app.cs 20081227010125P</guid></item><item><title>Updated Wiki: sample-app.cs</title><link>http://www.codeplex.com/commandline/Wiki/View.aspx?title=sample-app.cs&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
namespace SampleApp&lt;br /&gt;{&lt;br /&gt;    using System;&lt;br /&gt;    using System.Collections.Generic;&lt;br /&gt;    using CommandLine;&lt;br /&gt;    using CommandLine.Text;&lt;br /&gt; &lt;br /&gt;    internal sealed class Program&lt;br /&gt;    {&lt;br /&gt;        private static readonly HeadingInfo headingInfo = new HeadingInfo(&amp;quot;sampleapp&amp;quot;, &amp;quot;1.2.5&amp;quot;);&lt;br /&gt; &lt;br /&gt;        private sealed class Options&lt;br /&gt;        {&lt;br /&gt;            [Option(&amp;quot;r&amp;quot;, &amp;quot;read&amp;quot;,&lt;br /&gt;                    Required = true,&lt;br /&gt;                    HelpText = &amp;quot;Input file with data to process.&amp;quot;)]&lt;br /&gt;            public string InputFile = String.Empty;&lt;br /&gt; &lt;br /&gt;            [Option(&amp;quot;w&amp;quot;, &amp;quot;write&amp;quot;,&lt;br /&gt;                    HelpText = &amp;quot;Output file with processed data (otherwise standard output).&amp;quot;)]&lt;br /&gt;            public string OutputFile = String.Empty;&lt;br /&gt; &lt;br /&gt;            [Option(null, &amp;quot;calculate&amp;quot;,&lt;br /&gt;                    HelpText = &amp;quot;Add results in bottom of tabular data.&amp;quot;)]&lt;br /&gt;            public bool Calculate = false;&lt;br /&gt; &lt;br /&gt;            [Option(&amp;quot;v&amp;quot;, null,&lt;br /&gt;                    HelpText = &amp;quot;Verbose level. Range: from 0 to 2.&amp;quot;)]&lt;br /&gt;            public int VerboseLevel = 0;&lt;br /&gt; &lt;br /&gt;            [Option(&amp;quot;i&amp;quot;, null,&lt;br /&gt;                   HelpText = &amp;quot;If file has errors don't stop processing.&amp;quot;)]&lt;br /&gt;            public bool IgnoreErrors = false;&lt;br /&gt; &lt;br /&gt;            [Option(&amp;quot;j&amp;quot;, &amp;quot;jump&amp;quot;,&lt;br /&gt;                    HelpText = &amp;quot;Data processing start offset.&amp;quot;)]&lt;br /&gt;            public double StartOffset = 0;&lt;br /&gt; &lt;br /&gt;            &lt;a href="http://www.codeplex.com/commandline/Wiki/View.aspx?title=ValueList%28typeof%28Liststring%29%29&amp;amp;referringTitle=sample-app.cs"&gt;ValueList(typeof(Liststring))&lt;/a&gt;&lt;br /&gt;            public IList&amp;lt;string&amp;gt; DefinitionFiles = null;&lt;br /&gt; &lt;br /&gt;            [HelpOption(&lt;br /&gt;                    HelpText = &amp;quot;Dispaly this help screen.&amp;quot;)]&lt;br /&gt;            public string GetUsage()&lt;br /&gt;            {&lt;br /&gt;                HelpText help = new HelpText(Program.headingInfo);&lt;br /&gt;                help.Copyright = new CopyrightInfo(&amp;quot;Giacomo Stelluti Scala&amp;quot;, 2005, 2007);&lt;br /&gt;                help.AddPreOptionsLine(&amp;quot;This is free software. You may redistribute copies of it under the terms of&amp;quot;);&lt;br /&gt;                help.AddPreOptionsLine(&amp;quot;the MIT License &amp;lt;http://www.opensource.org/licenses/mit-license.php&amp;gt;.&amp;quot;);&lt;br /&gt;                help.AddPreOptionsLine(&amp;quot;Usage: SampleApp -rMyData.in -wMyData.out --calculate&amp;quot;);&lt;br /&gt;                help.AddPreOptionsLine(string.Format(&amp;quot;       SampleApp -rMyData.in -i -j{0} file0.def file1.def&amp;quot;, 9.7));&lt;br /&gt;                help.AddOptions(this);&lt;br /&gt;                return help;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt; &lt;br /&gt;        private static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            Options options = new Options();&lt;br /&gt;            ICommandLineParser parser = new CommandLineParser();&lt;br /&gt;            if (parser.ParseArguments(args, options, Console.Error))&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(&amp;quot;Verbose Level: {0}&amp;quot;, (options.VerboseLevel &amp;lt; 0 || options.VerboseLevel &amp;gt; 2) ? &amp;quot;#invalid value#&amp;quot; : options.VerboseLevel.ToString());&lt;br /&gt;                Console.WriteLine();&lt;br /&gt;                Console.WriteLine(&amp;quot;Reading input file: {0} ...&amp;quot;, options.InputFile);&lt;br /&gt;                foreach (string defFile in options.DefinitionFiles)&lt;br /&gt;                    Console.WriteLine(&amp;quot;  using definition file: {0}&amp;quot;, defFile);&lt;br /&gt;                Console.WriteLine(&amp;quot;  start offset: {0}&amp;quot;, options.StartOffset);&lt;br /&gt;                Console.WriteLine(&amp;quot;  tabular data computation: {0}&amp;quot;, options.Calculate.ToString().ToLowerInvariant());&lt;br /&gt;                Console.WriteLine(&amp;quot;  on errors: {0}&amp;quot;, options.IgnoreErrors ? &amp;quot;continue&amp;quot; : &amp;quot;stop processing&amp;quot;);&lt;br /&gt;                Console.WriteLine();&lt;br /&gt;                if (options.OutputFile.Length &amp;gt; 0)&lt;br /&gt;                {&lt;br /&gt;                    headingInfo.WriteMessage(string.Format(&amp;quot;Writing elaborated data: {0} ...&amp;quot;, options.OutputFile));&lt;br /&gt;                }&lt;br /&gt;                else&lt;br /&gt;                {&lt;br /&gt;                    headingInfo.WriteMessage(&amp;quot;Elaborated data:&amp;quot;);&lt;br /&gt;                    Console.WriteLine(&amp;quot;&lt;a href="http://www.codeplex.com/commandline/Wiki/View.aspx?title=...&amp;amp;referringTitle=sample-app.cs"&gt;...&lt;/a&gt;&amp;quot;);&lt;br /&gt;                }&lt;br /&gt;                Environment.Exit(0);&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                Environment.Exit(1);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 13:00:51 GMT</pubDate><guid isPermaLink="false">Updated Wiki: sample-app.cs 20081227010051P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/commandline/Wiki/View.aspx?title=Home&amp;version=57</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
&lt;u&gt;Introduction&lt;/u&gt;
&lt;/h2&gt;The Command Line Parser Library offers to CLR applications a simple programming interface for manipulating command line input. This library allows you to display an help screen with a good degree of customization. The API  keeps on its shoulders everything boring to code (&lt;i&gt;or I hope so, if not suggestions are always welcome!&lt;/i&gt;).&lt;br /&gt;&lt;h2&gt;
&lt;u&gt;How it works?&lt;/u&gt;
&lt;/h2&gt;The command line input, read from the standard entry point as string array, is then pushed in an instance of custom type decorated with library attributes. You just create this class with &lt;u&gt;one field&lt;/u&gt; for &lt;u&gt;each option value&lt;/u&gt; you want to make persistent (and a &lt;u&gt;special field&lt;/u&gt; for &lt;u&gt;non-option values&lt;/u&gt;). &lt;b&gt;Rules&lt;/b&gt; about &lt;u&gt;command line options&lt;/u&gt; are &lt;i&gt;engraved&lt;/i&gt; in your custom type from &lt;b&gt;library attributes&lt;/b&gt;. The &lt;b&gt;library source code&lt;/b&gt; contains a &lt;a href="http://www.codeplex.com/commandline/Wiki/View.aspx?title=sample%20application&amp;amp;referringTitle=Home"&gt;sample application&lt;/a&gt; that will clarify all told up to this moment (&lt;a href="http://www.codeplex.com/commandline/Wiki/View.aspx?title=sample-app.cs&amp;amp;referringTitle=Home"&gt;click here&lt;/a&gt; for syntax highlighted version).&lt;br /&gt;&lt;h2&gt;
&lt;u&gt;Source or Binary?&lt;/u&gt;
&lt;/h2&gt;The project is entirely written in C# and is also thought to be included in another project (&lt;i&gt;in this case the language used must match&lt;/i&gt;). If you reference the library as binary DLL file (&lt;i&gt;obviously from any .NET language&lt;/i&gt;) you can take advantage (depending on your IDE) of &lt;b&gt;documentation comments attached to any publicly visible members&lt;/b&gt;.&lt;br /&gt;&lt;h2&gt;
&lt;u&gt;Input Specification&lt;/u&gt;
&lt;/h2&gt;User can specify options with a high degree of freedom.&lt;br /&gt;This &lt;a href="http://www.gnu.org/software/libc/manual/html_node/Getopt.html" class="externalLink"&gt;Unix-like&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; &lt;u&gt;specification&lt;/u&gt; survives from years and years...&lt;br /&gt;However, you can read all details about it here: &lt;a href="http://www.codeplex.com/commandline/Wiki/View.aspx?title=Input%20Specification&amp;amp;referringTitle=Home"&gt;Input Specification&lt;/a&gt;.&lt;br /&gt;&lt;h2&gt;
&lt;u&gt;Reason to Use&lt;/u&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;See this my old blog post of &lt;a href="http://gsscoder.blogspot.com/2007/06/add-command-line-parsing-to-your.html" class="externalLink"&gt;30 June 2007&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;Features&lt;/u&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Simple API&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Compatibility&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;.NET Framework 2.0+ &lt;/li&gt;&lt;li&gt;Mono Profile 2.0+&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Tested&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Each release is tested with &lt;u&gt;Mono on Linux&lt;/u&gt;.&lt;/li&gt;&lt;li&gt;Contains unit tests from first release.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;Contacts&lt;/u&gt;
&lt;/h2&gt;For go deeper on the &lt;u&gt;usage&lt;/u&gt;, for &lt;u&gt;bug reports&lt;/u&gt; and &lt;u&gt;features requests&lt;/u&gt;:&lt;br /&gt;&lt;a href="http://gsscoder.blogspot.com/" class="externalLink"&gt;Author's Blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="mailto:gsscoder@ymail.com" class="externalLink"&gt;Author's E-Mail&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;And remember to take advantage of all greats CodePlex features.&lt;/i&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Sat, 27 Dec 2008 12:59:51 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20081227125951P</guid></item><item><title>Updated Release: 1.3.7 rc0 (Jul 22, 2008)</title><link>http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=15538</link><description>&lt;div&gt;
&lt;h2&gt;
&lt;u&gt;Updates&lt;/u&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Added support for multi-value options.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;OptionListAttribute type&lt;/u&gt;
&lt;/h2&gt;Using the new OptionList attribute you can specify a command line option that can accept a list of values separated by a character.&lt;br&gt;Now you can parse a command line like this:&lt;br&gt;&lt;pre&gt;
your-app --filename data.bin --sections 9;13;44
&lt;/pre&gt; &lt;br&gt;Simply employ the new attribute:&lt;br&gt;&lt;pre&gt;
class YourOptions
{
[...omissis...]
 
[OptionList(&amp;quot;s&amp;quot;, &amp;quot;sections&amp;quot;, ';')]
public IList&amp;lt;string&amp;gt; FileSections = null;
 
[...omissis...]
}
&lt;/pre&gt; &lt;br&gt;The resulting FileSections field (of type List&amp;lt;string&amp;gt;) will have three elements: '9', '13' and '44'.&lt;br&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Wed, 24 Dec 2008 17:08:03 GMT</pubDate><guid isPermaLink="false">Updated Release: 1.3.7 rc0 (Jul 22, 2008) 20081224050803P</guid></item><item><title>Released: 1.3.7 rc0 (Jul 22, 2008)</title><link>http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=15538</link><description>&lt;div&gt;
&lt;h2&gt;
&lt;u&gt;Updates&lt;/u&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Added support for multi-value options.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;OptionListAttribute type&lt;/u&gt;
&lt;/h2&gt;Using the new OptionList attribute you can specify a command line option that can accept a list of values separated by a character.&lt;br&gt;Now you can parse a command line like this:&lt;br&gt;&lt;pre&gt;
your-app --filename data.bin --sections 9;13;44
&lt;/pre&gt; &lt;br&gt;Simply employ the new attribute:&lt;br&gt;&lt;pre&gt;
class YourOptions
{
[...omissis...]
 
[OptionList(&amp;quot;s&amp;quot;, &amp;quot;sections&amp;quot;, ';')]
public IList&amp;lt;string&amp;gt; FileSections = null;
 
[...omissis...]
}
&lt;/pre&gt; &lt;br&gt;The resulting FileSections field (of type List&amp;lt;string&amp;gt;) will have three elements: '9', '13' and '44'.&lt;br&gt;
&lt;/div&gt;</description><author></author><pubDate>Wed, 24 Dec 2008 17:08:03 GMT</pubDate><guid isPermaLink="false">Released: 1.3.7 rc0 (Jul 22, 2008) 20081224050803P</guid></item><item><title>Updated Release: 1.3.3 beta (May 05, 2008)</title><link>http://www.codeplex.com/commandline/Release/ProjectReleases.aspx?ReleaseId=13137</link><description>&lt;div&gt;
&lt;h2&gt;
&lt;u&gt;Updates&lt;/u&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;API Reference Help File (available in &lt;i&gt;source code&lt;/i&gt; and &lt;i&gt;documentation&lt;/i&gt; packages) improved using &lt;a href="http://www.codeplex.com/Sandcastle"&gt;Sandcastle&lt;span&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Added unit-test coverage for &lt;b&gt;CommandLine.Text.HeadingInfo&lt;/b&gt; type.&lt;/li&gt;&lt;li&gt;You can now specify a constraint on non-option elements handled by the parser.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
&lt;u&gt;ValueList Changes&lt;/u&gt;
&lt;/h2&gt;The new &lt;b&gt;CommandLine.ValueListAttribute&lt;/b&gt; type supports now the &lt;b&gt;MaximumElements&lt;/b&gt; property.&lt;br&gt; &lt;br&gt;&lt;pre&gt;
class ParsedOptions
{
        [ValueList(typeof(List&amp;lt;string&amp;gt;), MaximumElements = 3)]
        public IList&amp;lt;string&amp;gt; FileList = null;
}
&lt;/pre&gt; &lt;br&gt;In this example the parser fail each time you specify more than &lt;b&gt;3&lt;/b&gt; non-option values in the command line.&lt;br&gt;The default is &lt;b&gt;-1&lt;/b&gt; that means that no upper bound is fixed.&lt;br&gt;Setting &lt;b&gt;MaximumElements&lt;/b&gt; to &lt;b&gt;0&lt;/b&gt; means that you can't specify non-option values.&lt;br&gt;
&lt;/div&gt;</description><author>gsscoder</author><pubDate>Wed, 24 Dec 2008 17:07:36 GMT</pubDate><guid isPermaLink="false">Updated Release: 1.3.3 beta (May 05, 2008) 20081224050736P</guid></item></channel></rss>