我能使用多个DNX版本吗?

3
我创建了一个新的ASP.NET 5项目,遇到一些关于新ASP.NET的工作方式不太理解的问题。在我的引用中有DNX 4.5.1和DNX Core 5.0。当我从Nu-Get安装新的包时,有些包在两者上都成功安装,而有些告诉我它们不受DNX Core 5.0支持。为了享受ASP.NET 5的诸如跨平台等优点,我是否可以使用多个DNX版本来支持我的包,或者必须将事物绑定在DNX Core 5.0上?

4.5.1是.NET Framework的一个配置文件,而5.0则是.NET Core的配置文件。它们是不同的CLR环境。如果您的应用程序需要支持Linux,也就是跨平台,那么您必须选择.NET Core 5,并确保所有依赖项与该环境兼容。许多现有的软件包可能尚未兼容。您可以等待作者进行更新,或者切换到其他软件包。 - Lex Li
谢谢!我试图将一些代码从ASP.NET 4项目传递到ASP.NET 5项目,但是我遇到了许多包兼容性问题,主要是基于OWN Selfhost的WebAPI。 - João Pedro
1个回答

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的平台特定功能,并且由于平台仍在发展中,一些API在.NET Core中尚未实现。这就是为什么当您使用现有代码/库针对.NET Core时,可能会看到许多编译错误的原因。为了在.NET Core上运行现有.NET代码,通常需要进行至少一些小的调整以考虑更小的API印记,并且可能需要严重重新设计以解决缺少功能。
如果您需要使用现有代码并依赖于基于先前版本的.NET的程序集/ NuGet包,则必须坚持使用完整的.NET版本。您仍然可以利用新的ASP.NET 5功能和生态系统,以及从以前的.NET版本中所熟悉的完整.NET运行时和完整API表面的好处。缺点是运行时仅限于Windows,并且具有更大的资源占用。
.NET Core是一个新的运行时,您应该将其视为这样。迁移到此平台可能不是微不足道的任务。此平台的好处是更精简的印记,并且可以在多个操作系统平台上运行。
由于Microsoft扩展了功能集和跨平台兼容性,.NET Core的全部潜力很可能需要一些时间才能实现,但我们真正不知道它会是什么样子,因为它仍处于Beta阶段(好吧,RC,但它实际上是带有重大变化的beta,RC2仍在进行中)。

谢谢!我开始构建我的大学毕业项目,并在ASP.NET 4项目(.NET Framework 4.6)中开始编码,然后我注意到了“大型ASP.NET 5 RC”的公告!所以我试图将第一个项目中完成的一些事情传递到新的ASP.NET 5项目中,但许多事情都不起作用。主要是OWIN Selfhost包,我的WebAPIs项目是基于它的。好吧,我想至少等待一年再使用它可能是个好主意... - João Pedro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接