我创建了一个新的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上?
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仍在进行中)。