В недавнем сообщении в блоге Стефана Клири о асинхронных консольных приложениях. на .NET CoreCLR он показывает нам, что в CoreCLR (в настоящее время работает в Visual Studio 2015, CTP6) точка входа «Main» может быть помечена как async Task, правильно скомпилирована и действительно запущена:
public class Program
{
public async Task Main(string[] args)
{
Console.WriteLine("Hello World");
await Task.Delay(TimeSpan.FromSeconds(1));
Console.WriteLine("Still here!");
Console.ReadLine();
}
}
Дает следующий вывод:

Это подкрепляется записью в блоге группы ASP.NET под названием A Deep Dive среда выполнения ASP.NET 5:
В дополнение к статической точке входа
Program.MainKRE поддерживает точки входа на основе экземпляров. Вы даже можете сделать основную точку входа асинхронной и вернуть Task. Имея основной точкой входа метод экземпляра, вы можете внедрить сервисы в ваше приложение средой выполнения.
Мы знаем, что до сих пор точка входа не может быть помечены модификатором 'async'. Итак, как это возможно в новой среде выполнения CoreCLR?