【问题标题】:Using ASP.NET Core features in full .NET Framework 4.6在完整的 .NET Framework 4.6 中使用 ASP.NET Core 功能
【发布时间】:2019-04-19 13:40:57
【问题描述】:

参考Why use the full .NET Framework with ASP.NET Core?,看来.NET 4.7.2 是前进的方向?

我们现有的应用程序使用 ASP.NET Boilerplate 以 .NET 4.6.1 为目标。

是否必须迁移到 .NET 4.7.* 才能利用 ASP.NET Core 2.1 功能?

【问题讨论】:

    标签: c# asp.net-core asp.net-core-2.1 aspnetboilerplate .net-4.6.1


    【解决方案1】:

    要使用 .NET Core 2.1 功能,您需要以 .NET Core 2.1 为目标

    有 .NET 标准,它是一系列实现中可用功能的交集,包括 .NET Core 和 .NET Framework。如果您以 .NET Standard(某些特定版本)为目标,那么您可以使用该版本 .NET Standard 中提供的功能,并且它应该在任一 .NET Framework 上运行 4.7.2 或 .NET Core 2.1。

    作为一般指南:库(例如 Aspnet Boilerplate)现在应该 - 在可能的情况下 - 以 .NET Standard 为目标,但通常会有一个多目标构建以允许它们在内部利用目标 -特定框架的特定功能(可能使用 .NET Core 中增强的“跨度”或 SIMD 功能)。

    应用程序代码应该(并且必须,如果它是可执行文件)以特定框架为目标,例如 .NET Framework 或 .NET Core。

    【讨论】:

      【解决方案2】:

      不,无需迁移到 .NET 4.7.* 即可利用 ASP.NET Core 2.1 功能。

      ASP.NET Core 2.x 由 .NET Standard 库组成。使用 .NET Standard 2.0 编写的应用可以在任何支持 .NET Standard 2.0 的地方运行。

      与 .NET Standard 2.0 兼容的 .NET Framework 版本支持 ASP.NET Core 2.x:

      • 强烈建议使用 .NET Framework 4.7.1 及更高版本。
      • .NET Framework 4.6.1 及更高版本。

      如果您需要Announcing .NET Framework 4.7.2 中的功能,您只需迁移到 .NET 4.7.2:

      • ASP.NET – WebForms 中的依赖注入
      • ASP.NET – SameSite Cookie
      • ClickOnce – 支持 WPF 和 HDPI 感知 ClickOnce 部署的应用程序的每个监视器
      • ClickOnce – 启用部署清单的 SHA256 时间戳
      • SQL – Azure AD 通用和多重身份验证支持
      • BCL – 加密改进
      • BCL – ZLib 对 DeflateStream 的解压支持
      • BCL – 其他集合 API
      • WorkflowDesigner 高对比度改进
      • WPF - 按源查找 ResourceDictionaries
      • WPF - 查找 ResourceDictionary 所有者
      • WPF – 查找静态资源引用

      参考资料:

      【讨论】:

        【解决方案3】:

        实际上,如果您正在使用 .NET Core/Standard 构建应用程序,但在您的应用程序中,您可能有一些使用 .NET Framework 的参考,这一定是个大问题。


        一个故事:我正在使用 ASP.NET Core 构建一个 Web 应用程序,在这个应用程序中,我想要一个将 HTML 转换为 pdf 的扩展。

        我尝试在 Google 上搜索并找到一个名为:itextsharp 的插件。而问题就出在这里。

        itextsharp 使用 .NET Framework,而我的主要项目使用 .NET Core。由于我想创建一个类库来构建这个扩展,我有 3 个选项:

        1. 使用 .NET Core 类库。

        2. 使用 .NET Standard 类库。

        3. 使用 .NET Framwork 类库。

        都可以参考主项目。 但是:

        我不能在 .NET Core/Standard 类库中使用 itextsharp 引用(itextsharp.dll、itextsharp.xtra.dll、itextsharp.pdfa.dll、itextsharp.xmlworker.dll...)。它们都只能在目标 .NET Framework 上运行。

        (由于许可证,我还没有提到如何将代码转换为目标 .NET Standard 或 Core)

        我的解决方案是:构建一个 .NET Framework 应用程序并将其发布到 exe 文件,然后作为参考附加到主项目。

        P/S:目前,itextsharp 有一个核心版本,但我认为它还不够好(问题:显示图像、带有 unicode 文本的字体、样式标签......)。


        总的来说,如果您想构建一些使用目标 .NET X 的应用程序,则必须确保所有引用也可以使用目标 .NET X。


        另一个例子:如果你想构建一个使用Razor class library的类库。您必须确保所有引用都使用目标 .NET Core/Standard。因为Razor class library不能引用 .NET Framework 类库。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-12
          • 2017-02-13
          • 2017-03-06
          相关资源
          最近更新 更多