我可以使用许多DNX版本吗?

时间:2016-01-05 01:45:10

标签: asp.net nuget asp.net-core asp.net-core-mvc dnx

我已经创建了一个新的ASP.NET 5项目,我遇到了一些我对新ASP.NET工作原理并不了解的事情。

在我的参考资料中有DNX 4.5.1和DNX Core 5.0。当我从Nu-Get安装新软件包时,一些软件包在两者中都成功安装,有些软件包告诉我它们不受DNX Core 5.0的支持。

我可以使用多个版本的DNX来支持我的软件包吗?或者我必须使用DNX Core 5.0绑定这些东西以享受ASP.NET 5的优势,比如跨平台和其他?

1 个答案:

答案 0 :(得分:4)

ASP.NET 5项目是多目标的,这意味着您可以同时编译多个平台。在您的情况下,.NET 4.5.1在完整的.NET运行时(4.5.1)和.NET Core(5.0)上面向ASP.NET 5。编译项目时,ASP.NET 5实际上为这两个目标创建了输出 - 假设您获得了为两个平台编译的代码 - 应用程序可以在其中任何一个上运行。可以为您的项目运行其他目标。

当您实际运行应用程序时,您必须选择要在其下运行的特定版本的.NET运行时。在Visual Studio中,项目设置中有一个下拉列表,您可以在其中选择实际执行的运行时。使用命令行发布时,还可以使用参数指定要发布到哪个平台(如果省略,则使用我认为的活动DNX运行时)。

至于差异 - .NET Core是完整.NET运行时的精简版本,它是跨平台的,可以在Windows和Linux和OSX等其他平台上运行。因为它必须在其他平台上运行,所以此运行时不支持许多特定于平台的Windows功能,并且由于平台仍在不断发展,因此在.NET Core中尚未实现某些API。这就是当您使用现有代码/库定位.NET Core时,您可能会看到许多编译错误的原因。为了在.NET核心上运行,现有的.NET代码通常至少需要进行一些小的调整,以解决较小的API占用空间,并可能进行严格的重新设计以解决缺少的功能。

如果您需要使用现有代码并依赖基于早期版本.NET的程序集/ NuGet包,则必须坚持使用完整的.NET版本。您仍然可以利用新的ASP.NET 5功能和生态系统,以及从以前的.NET版本中获得的完整.NET运行时和完整API表面的优势。缺点是运行时只是Windows,资源占用空间更大。

.NET Core是一个新的运行时,你应该这样对待它。迁移到此平台可能不是一项简单的任务。该平台的优势是更加精简,并且可以跨多个操作系统平台运行。

随着Microsoft扩展功能集和跨平台兼容性,.NET Core的全部潜力可能需要一段时间才能实现,但我们不会真正知道它会是什么样子,因为它是仍然处于测试阶段(很好的RC,但它确实是一个测试版,主要变化仍然存在于RC2中)。