A NuGet package which helps you write command-based console programs in .Net. https://www.craigoates.net/Software/project/7
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Craig Oates cd45bfc519 update NuGet icon image. 5 months ago
.attachments/Images update NuGet icon image. 5 months ago
Console.Waterworks update NuGet icon image. 5 months ago
.gitattributes Added projects to the solution. 2 years ago
.gitignore upload assembly info. to 1 year ago
LICENSE Initial commit 2 years ago
README.md fix link in readme to wikis. 7 months ago



Console.Waterworks is a NuGet package. It aim is to help you write extendable and command-based console programs in C# and .Net.

Amongst other things, Console.Waterworks allows you to write (command-)methods which become run-time commands. Console.Waterworks, also, parses end-user input for you and handles bad input and method parameters too.

If none of what I just said made no sense, hopefully the images below will help explain what Console.Waterwork is and how it works.

Good Input Data Flow

Example 1

Bad Input Data Flow

Example 3

Code Example - Good Input

Example 2

Code Example - Bad Input

Example 4

Within this repository is three projects within one Visual Studio solution. Those projects are as follows:

  1. Console.Waterworks
  2. CW_Console
  3. CW_Tests


Console.Waterworks is based on the ConsoleApplicationBase repository by TypecastException.


To use Console.Waterworks, I recommend you meet the following pre-requisites:

Console.Waterworks (Library/NuGet Package)

This is a traditional .Net 4.7 library I wrote in C#. This is what you will add to your project when you want to add the features of this codebase into yours. To add it to your project, use the following command in your Package-Manager console (assuming Visual Studio),

// Make sure you change the version number to match the one you want.
Install-Package Console.Waterworks -Version

If you are using the .Net CLI, use the following command,

// Again, make sure you change the version number to the one you want.
dotnet add package Console.Waterworks --version

For more information, please use the following links:


This is a traditional .Net console program which provides a working example of how Console.Waterworks works. You can use this as a reference to help you familiarise yourself with how to add/use Console.Waterworks to/with your project. This is written in C#.


This is a .Net library which houses the solution’s unit tests. This is written in C# and uses xUnit as its testing framework/library/situation/whatever-you-want-to-call-it.

About the Creator

Hi, my name is Craig and I’m the creator of Console.Waterworks. Thanks for checking it out.

A Note About Console.Waterworks.Core

When I started this project, the .Net Framework was its infancy with its switch to .Net Core. Because of this, I created a separate .Net Core version of this project for those wanting to use it with Core. If you decide to use the Core version, you will find it operates the exact same way as this one. So, learning how one works means you know how to use both. This is why the I have reduced the wiki for the Console.Waterworks.Core wiki to basic guidance on how to use it. If you want to know how the projects are built, you will need to use this repository’s wiki.

If you are interested in using Console.Waterworks.Core, you can use the following links: