我可以使用多个 DNX 版本吗?
Can I use many DNX versions?
我创建了一个新的 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个项目是multi-targeted,这意味着你可以同时为多个平台编译。在您的情况下,.NET 4.5.1 在完整的 .NET 运行 时间 (4.5.1) 和 .NET Core (5.0) 上以 ASP.NET 5 为目标。当您编译您的项目时,ASP.NET 5 实际上会为这两个目标创建输出 - 假设您获得了为两个平台编译的代码 - 应用程序可以在其中任何一个上 运行。您的项目可以 运行 其他目标。
当您实际 运行 您的应用程序时,您必须选择特定版本的 .NET 运行时间您想要 运行。在 Visual Studio 中,项目设置中有一个下拉菜单,您可以在其中 select 运行 实际执行的时间。当您使用命令行发布时,您还可以使用参数指定要发布到哪个平台(如果省略,我相信它会使用活动的 DNX 运行time)。
至于差异 - .NET Core 是完整 .NET 运行 时间的精简版本,即 cross-platform 并且可以 运行 Windows以及 Linux 和 OSX 等其他平台。因为它必须在其他平台上 运行 许多特定于平台的 Windows 功能在此 运行 时间不支持,并且由于该平台仍在发展一些 APIs根本还没有在 .NET Core 中实现。这就是当您使用现有的 code/libraries 定位 .NET Core 时,您可能会看到许多编译错误的原因。为了 运行 在 .NET 核心上,现有的 .NET 代码通常需要至少进行一些小的调整以解决更小的 API 占用空间,并且可能需要进行认真的重新设计以解决缺失的功能。
如果您需要使用现有代码并依赖于 assemblies/NuGet 基于以前版本的 .NET 的程序包,您必须坚持使用完整的 .NET 版本。您仍然可以利用新的 ASP.NET 5 功能和 eco-system,以及获得完整的 .NET 运行time 和完整的 API 表面的好处从以前的 .NET 版本。缺点是 运行 时间仅为 Windows,并且占用的资源更大。
.NET Core 是一个新的 运行 时代,您应该这样对待它。迁移到这个平台可能不是一项简单的任务。这个平台的好处是占用空间更小,并且它可以 运行 跨多个 OS 平台。
随着 Microsoft 扩展功能集和 cross-platform 兼容性,.NET Core 的全部潜力可能需要一些时间才能实现,但我们真的不知道这会是什么样子就像因为它仍处于 Beta 阶段(好吧 RC 但它确实是一个 Beta 版本,RC2 中仍有重大变化)。
我创建了一个新的 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个项目是multi-targeted,这意味着你可以同时为多个平台编译。在您的情况下,.NET 4.5.1 在完整的 .NET 运行 时间 (4.5.1) 和 .NET Core (5.0) 上以 ASP.NET 5 为目标。当您编译您的项目时,ASP.NET 5 实际上会为这两个目标创建输出 - 假设您获得了为两个平台编译的代码 - 应用程序可以在其中任何一个上 运行。您的项目可以 运行 其他目标。
当您实际 运行 您的应用程序时,您必须选择特定版本的 .NET 运行时间您想要 运行。在 Visual Studio 中,项目设置中有一个下拉菜单,您可以在其中 select 运行 实际执行的时间。当您使用命令行发布时,您还可以使用参数指定要发布到哪个平台(如果省略,我相信它会使用活动的 DNX 运行time)。
至于差异 - .NET Core 是完整 .NET 运行 时间的精简版本,即 cross-platform 并且可以 运行 Windows以及 Linux 和 OSX 等其他平台。因为它必须在其他平台上 运行 许多特定于平台的 Windows 功能在此 运行 时间不支持,并且由于该平台仍在发展一些 APIs根本还没有在 .NET Core 中实现。这就是当您使用现有的 code/libraries 定位 .NET Core 时,您可能会看到许多编译错误的原因。为了 运行 在 .NET 核心上,现有的 .NET 代码通常需要至少进行一些小的调整以解决更小的 API 占用空间,并且可能需要进行认真的重新设计以解决缺失的功能。
如果您需要使用现有代码并依赖于 assemblies/NuGet 基于以前版本的 .NET 的程序包,您必须坚持使用完整的 .NET 版本。您仍然可以利用新的 ASP.NET 5 功能和 eco-system,以及获得完整的 .NET 运行time 和完整的 API 表面的好处从以前的 .NET 版本。缺点是 运行 时间仅为 Windows,并且占用的资源更大。
.NET Core 是一个新的 运行 时代,您应该这样对待它。迁移到这个平台可能不是一项简单的任务。这个平台的好处是占用空间更小,并且它可以 运行 跨多个 OS 平台。
随着 Microsoft 扩展功能集和 cross-platform 兼容性,.NET Core 的全部潜力可能需要一些时间才能实现,但我们真的不知道这会是什么样子就像因为它仍处于 Beta 阶段(好吧 RC 但它确实是一个 Beta 版本,RC2 中仍有重大变化)。