在完整的.NET Framework 4.6中使用ASP.NET Core功能

时间:2018-11-16 11:07:40

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

参考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功能?

3 个答案:

答案 0 :(得分:3)

要使用.NET Core 2.1功能,您需要定位.NET Core 2.1

有.NET Standard ,它是一系列实现中可用的功能的交叉点,包括.NET Core和.NET Framework。如果以.NET Standard (某些特定版本)为目标,则可以使用该版本的.NET Standard中可用的功能,并且它应该在两个.NET Framework上运行 4.7.2或.NET Core 2.1。

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

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

答案 1 :(得分:3)

否,没有必要迁移到.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 –对DeflateStream的ZLib解压缩支持
  •   
  • BCL –其他收集API
  •   
  • WorkflowDesigner高对比度改进
  •   
  • WPF –按源查找ResourceDictionaries
  •   
  • WPF –查找ResourceDictionary所有者
  •   
  • WPF –查找StaticResource引用
  •   

参考文献:

答案 2 :(得分:1)

实际上,如果您正在使用.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中使用itextsharp引用(itextsharp.dllitextsharp.xtra.dllitextsharp.pdfa.dllitextsharp.xmlworker.dll ...)核心/标准类库。它们都只能在目标.NET Framework上运行。

(由于许可证,我尚未提及如何将代码转换为目标.NET Standard或Core)

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

P / S:目前,itextsharp拥有Core版本,但我认为它还不够好(有关问题:显示图像,带有Unicode文本的字体,样式标签...)。


总体而言,如果要构建使用目标.NET X的应用程序,则必须确保所有引用也可以使用目标.NET X。


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