什么是vNext控制台应用程序?

an *_*wig 5 c# asp.net-core

我安装了Visual Studio 2015 RC来试用ASP.Net vNext模板.在"Web"部分中,我注意到一个控制台应用程序显示为

在此输入图像描述

我决定把它搞乱,我发现了一些有趣的观点:

  • 默认模板未指定Main()static.
  • 许多组件如System.CodeDomSystem.Net不可用.
  • 许多方法如System.Console.ReadKey不能使用.

这些vNext控制台应用程序是什么?为什么限制以及它们的用途是什么?

Sha*_*tin 6

答案

什么是vNext控制台应用程序?

它是一个在新的.NET运行时环境(DNX)中运行的控制台应用程序.

为什么限制以及它们的用途是什么?

之所以出现限制,是因为您的目标是.NET Core(dnxcore50)而不是(或除此之外)完整的.NET Framework(dnx451.)据我所知,这些限制的使用是为了允许与大量的.NET Framework 交叉兼容.不同的操作系统.也就是说,.NET Core比完整框架具有更少的功能,因为它更容易与许多系统兼容.加班,这些限制可能会因为更多的完全跨平台而消失.

默认模板未将Main()指定为static.

DNX附带Microsoft.Framework.ApplicationHost.这个默认的应用程序主机"知道如何找到一个public void Main方法.这是用于设置ASP.NET托管层的入口点......"它还知道如何找到传统static void Main方法.实例Main方法的一个优点是它允许我们要求运行时环境将服务注入到我们的应用程序中.

许多程序集(如System.CodeDom和System.Net)都不可用.许多方法如System.Console.ReadKey都不能使用.

System.Console.ReadKey可用dnx451但不在dnxcore50.System.Net我最后一次检查也是如此.所以,如果你想使用它们,请确保目标dnx451而不是dnxcore50.

想要删除限制?只需dnxcore50project.json文件中删除条目即可.然后,您将只是无限制地定位完整框架.

也可以看看

https://msdn.microsoft.com/en-us/magazine/dn913182.aspx

'console'在asp.net 5控制台应用程序中不包含'ReadKey'的定义

在ASP .NET MVC 6项目中使用System.Net.Mail