The answers
What is a vNext console application?
This is a console application that runs in the .NET environment of the .NET runtime (DNX).
Why are limitations and what are their uses?
Limitations arise because you target the .NET Core ( dnxcore50 ) instead of (or in addition) the full .NET Framework ( dnx451 .) Using these limitations, as far as I know, is to provide cross-compatibility with many different operating systems. That is, .NET Core has less functionality than in the full structure, because it is easier to be compatible with many systems. Overtime, these restrictions may disappear, as there is more in a fully cross platform.
The default template does not specify Main () as static.
DNX comes with Microsoft.Framework.ApplicationHost . This default application host “knows how to find the public void Main method. This is the entry point used to configure the ASP.NET hosting level ...” He also still knows how to find the traditional static void Main method. The advantage of the Main instance method is that it allows us to query the runtime for implementing services in our application.
Many assemblies, such as System.CodeDom and System.Net, are not available. Many methods, such as System.Console.ReadKey, cannot be used.
System.Console.ReadKey is available in dnx451 , but not in dnxcore50 . This is also true for System.Net the last time I checked. Therefore, if you want to use them, make sure you select dnx451 instead of dnxcore50 .
Want to remove restrictions? Just delete the dnxcore50 entry from your project.json file. Then you will only focus on the full frame without any restrictions.
see also
https://msdn.microsoft.com/en-us/magazine/dn913182.aspx
"Console" does not contain a definition for "ReadKey" in asp.net 5 console application
Using System.Net.Mail in an ASP NET MVC 6 Project