Asp.net 我可以使用多个DNX版本吗?

Asp.net 我可以使用多个DNX版本吗?,asp.net,nuget,asp.net-core,asp.net-core-mvc,dnx,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的优势,比如跨平台和其他方面?ASP.NET 5项目是多目标的,这意味着您可以同时为多个平台

我已经创建了一个新的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的优势,比如跨平台和其他方面?

ASP.NET 5项目是多目标的,这意味着您可以同时为多个平台编译。在您的例子中,.NET 4.5.1在完整的.NET运行时(4.5.1)和.NET核心(5.0)上以ASP.NET 5为目标。在编译项目时,ASP.NET 5实际上会为这两个目标创建输出,因此,假设您获得了为这两个平台编译的代码,那么应用程序可以在其中任何一个平台上运行。可以为项目运行其他目标

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

至于区别,.NETCore是完整的.NET运行时的精简版本,它是跨平台的,可以在Windows和其他平台(如Linux和OSX)上运行。因为它必须在其他平台上运行,所以许多特定于平台的Windows功能在此运行时中不受支持,而且由于平台仍在发展,一些API根本没有在.NET Core中实现。这就是当您使用现有代码/库以.NET内核为目标时,可能会看到许多编译错误的原因。为了在.NET核心上运行,现有的.NET代码通常需要至少进行一些小的调整,以考虑更小的API占用空间,并且可能需要重新设计以解决缺少的功能

如果您需要使用现有代码并依赖基于.NET以前版本的程序集/NuGet包,则必须坚持使用完整的.NET版本。您仍然可以利用新的ASP.NET 5功能和eco系统,并从以前的.NET版本中使用的完整.NET运行时和完整API界面中获益。缺点是运行时仅限于Windows,占用的资源更大

.NETCore是一个新的运行时,您应该这样对待它。迁移到此平台可能不是一项简单的任务。该平台的优点是占地面积更小,可以跨多个操作系统平台运行


随着Microsoft扩展功能集和跨平台兼容性,可能需要一段时间才能充分发挥.NET Core的潜力,但我们不知道它会是什么样子,因为它仍处于测试阶段(好吧,RC,但它确实是一个测试阶段,RC2仍有重大变化).

4.5.1是.NET Framework的配置文件,而5.0是.NET核心的配置文件。它们是不同的CLR环境。如果您的应用程序需要支持Linux,也称为跨平台,那么您必须选择.NET Core 5,并确保所有依赖项都与该环境兼容。许多现有软件包可能还不兼容。您要么等待作者赶上,要么切换到其他软件包。谢谢!我试图将一些代码从ASP.NET 4项目传递到ASP.NET 5项目,但在软件包兼容性方面遇到了很多问题,主要是与我的WebAPI所基于的Selfhost兼容。谢谢!我开始构建学院的最终项目,我开始在ASP.NET 4项目(.NET Framework 4.6)中编码,然后我注意到“大型ASP.NET 5 RC”的发布!因此,我尝试将我在第一个项目中所做的几件事情传递给新的ASP.NET5项目,但很多事情都不起作用。主要是OWIN Selfhost包,我的WebAPI项目就是基于这个包的。嗯,我想至少等一年再使用它是个好主意。。。