// @nuget: CommandLineParser -Version 2.6.0
//MapResult async
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using CommandLine;
public class Program
{
public static async Task Main()
var args = "--userid=root -t int:long:string".Split();
var retValue = await Parser.Default.ParseArguments<Options>(args).MapResult(RunAndReturnExitCodeAsync, _ => Task.FromResult(1));
Console.WriteLine($"retValue={retValue}");
}
//Should be Task<T>, for MapResult
static async Task<int> RunAndReturnExitCodeAsync(Options options)
Console.WriteLine("Starting async/await method");
Console.WriteLine("A");
await Task.Delay(100);
Console.WriteLine("B");
Console.WriteLine("C");
Console.WriteLine($"UserId={options.UserId}");
return 0;
class Options
[Option]
public string UserId
get;
set;
[Option('t', Separator = ':')]
public IEnumerable<string> Types