Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么是vNext控制台应用程序?_C#_Asp.net Core - Fatal编程技术网

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

C# 什么是vNext控制台应用程序?,c#,asp.net-core,C#,Asp.net Core,我安装了Visual Studio 2015 RC以试用ASP.Net vNext模板。在“Web”部分,我注意到一个控制台应用程序显示为 我决定把它弄得一团糟,我发现了一些有趣的地方: 默认模板未将Main()指定为static 许多程序集,如System.CodeDom和System.Net都不可用 无法使用许多方法,例如System.Console.ReadKey 这些vNext控制台应用程序是什么?为什么会有这些限制?它们的用途是什么?这些控制台应用程序正在利用新的(DNX,以前是

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

我决定把它弄得一团糟,我发现了一些有趣的地方:

  • 默认模板未将
    Main()
    指定为
    static
  • 许多程序集,如
    System.CodeDom
    System.Net
    都不可用
  • 无法使用许多方法,例如
    System.Console.ReadKey

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

这些控制台应用程序正在利用新的(DNX,以前是KRE)。它包括一个新的项目系统,并允许您确定目标

其中一个版本是CoreCLR,它是.NET的精简版本。这个版本是模块化的,它作为一组NuGet包分发。在以.NET Core为目标时,您可能需要包括一些额外的包(project.json文件的依赖项部分)

然而,有些限制可能是由于并非所有API都已迁移到.NET Core,或者由于.NET Core上的API表面积较小,因此它们不会迁移到.NET Core。

什么是vNext控制台应用程序

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

为什么会有这些限制?这些限制的用途是什么

出现这些限制是因为您的目标是.NET Core(
dnxcore50
),而不是(或除了)完整的.NET Framework(
dnx451
)。据我所知,使用这些限制是为了允许与许多不同的操作系统交叉兼容。也就是说,.NETCore的功能比完整框架少,因为这样更容易与许多系统兼容。随着时间的推移,这些限制可能会随着更多的产品完全跨平台制造而消失

默认模板未将Main()指定为静态

DNX
随Microsoft.Framework.ApplicationHost提供
。此默认应用程序主机“知道如何查找
公共void Main
方法。这是用于设置ASP.NET托管层的入口点…”它还知道如何查找传统的
静态void Main
方法。实例
Main
方法的一个优点是,它允许我们请求运行时环境将服务注入到我们的应用程序中

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

System.Console.ReadKey
可在
dnx451
中使用,但不在
dnxcore50
中使用。上次检查时,
System.Net
也是如此。因此,如果您想使用这些,请确保以
dnx451
为目标,而不是
dnxcore50

要删除限制吗?只需从
project.json
文件中删除
dnxcore50
条目即可。那么您将只针对完整的框架,没有任何限制

另见


我正在慢慢地浏览新的运行时,并将用相关参考资料更新这篇文章


有一段代码用来挑选程序类及其主要功能

这是一篇极好的读物:微软在命名和版本控制方面非常糟糕。DNX比ASP.NET大。可以制作一个以DNX为目标的应用程序或库(以及间接的一个或多个受支持的框架)。该应用程序或库可能与ASP.NET无关。在C#下,使用模板控制台应用程序(DNX)和类库(DNX)更有意义。如果您仍然想知道为什么这些项目模板在ASP.NET下,请参阅第一句话。在RC之前,该模板被命名为更糟糕的“ASP.NET 5控制台应用程序”。