Tips for Writing Console Applications
I write a lot of console applications for everything from testing a snippet of .NET code to simple utilities to automate a process or solve a problem. Here are a couple of tips for writing console applications.
Use Exit Codes
Traditionally console applications return an exit code of 0 for success and non-zero for failure. Some applications take this further and do things like return negative numbers for errors and positive numbers for warnings. Be aware that a number of tools (for example, MSBuild) will assume that anything non-zero is a failure. For this reason I typically don’t return a special exit code for warnings, I do however return a unique (usually negative exit code) for each error condition.
Use Enumerations for Exit Codes
You can simplify keeping track of your exit codes by using a private enumeration, this also serves as a way of documenting your exit codes.
class Program
{
static int Main(string[] args)
{
if (args.Length < 1 || args.Length > 3)
{
Console.Error.WriteLine("USAGE: ...");
return (int)ExitCode.InvalidUsage;
}
return (int)ExitCode.Success;
}
private enum ExitCode
{
Success = 0,
InvalidUsage = -1
}
}
Simplify Development and Debugging
When running a console application from a debugger it can often be frustrating that the console window closes before you can review the output. The simple solution is to add a Console.ReadLine() to the end of your application’s code but it’s easy to accidentally leave this in there. So why not leave this code in your application permanently:
if (Debugger.IsAttached)
{
Console.ReadLine();
}