title: Architecting a C# console app for multiple different tasks
body: <p>I want to build a simple C# console app that can be run from the command-line and that will do   different tasks.What is the best way to architect this flexibly? I can see how the various tasks could be built with the Strategy pattern. Is the Main() function just a giant switch? How do people typically implement this general concept?</p>
  
  <p>UPDATE: I am looking "stylistically" at git/hg or like, but maybe less actions. A user would work at the command-line, issuing a task with associated params, ex: <code>git add -f</code>. So, using that as an example, Git/Mercurial allow extensions. I'm actually looking for various general ways to approach this issue, and benefits/tradeoffs of approaches. No one design is perfect.</p>