How to write an Async console application (in Visual Studio 2017!)
It's a simple enough task. You want to write a console application using .NET Core and you want to use async/await to handle some long running tasks. Everything's going great until you try to mark the entry method in your console app as async:
static async Task Main(string[] args)
{
await yourCode();
}
And now it no longer compiles.
The compilation error "Program does not contain a static 'Main' method suitable for en entry point" is down to the fact that the C# language doesn't support an Async main method. That's a bit confusing.
C# 7.1 supports Async main methods but earlier versions do not. You guessed it, Visual Studio 2017 (at least at the time of writing) defaults to an earlier version. The fix is simply to select C# 7.1 or later as the version to compile to. It's a simple configuration change.
Open the project properties for your console app project and go to the build section.
Right down the bottom there's an "Advanced" button. This pops up a dialog that will allow you to change the target C# language version.
Notice that "C# latest major version (default)" is selected. Presumably, this means that C# 7.0 is being targeted.
Change the selection to either "C# latest minor version (latest)" or "C# 7.1".
Your application should now compile!