。net core 2.2中的引用.net(4.7.1)项目

问题描述 投票:-1回答:1

我有一个.net Core 2.2项目。这是使用Web应用程序(模型视图控制器)模板创建的。我可以将.Net Framework 4.7.1项目添加到此核心项目中,它可以编译,运行-并部署在我的测试服务器上。

1]然后,我读到了2.2寿命终止,并尝试将其迁移到3.1,并且无法在3.1框架中引用.Net Framework 4.7.1。我不知道下一步是什么。

2)我读到可以将dll转换为.Net Standard和参考-但是,我该怎么做?

3)这些4.7.1 dll由.Net Framework项目和核心项目共享,因此如果我将其更改为.Net Standard-我的.Net Framework应用程序可以工作吗?

4)另外-由于EOL,我是否应该将2.2核心项目迁移到3.0?这是强制性的吗?如果我不迁移,EOL将如何影响审核?

asp.net-core-2.2
1个回答
0
投票

首先,2.2是EOL,因为2.1是LTS版本。如果您不想跳到3.x,可以将其降级到2.1,我认为您仍然可以获得一两年的支持。

但是,3.x迈出了迈向一个.NET(适用于所有工作流程的.NET 5)这一新愿景的第一步,因此,越早到达那里越好。具体来说,3.1是3.x的LTS版本,因此如果您不想在一段时间内被迫再次升级,请坚持使用3.1。

。NET Core 3.x实现.NET Standard 2.1,这就是为什么您不能再以此为目标(.NET Framework的任何版本都没有实现.NET Standard 2.1的原因)。但是,.NET Core(2.x和3.x)和.NET Framework 4.6.1+都支持.NET Standard 2.0。因此,如果需要在所有这些目标之间共享库,则应以.NET Standard 2.0为目标。

就转换现有库而言,只需将目标框架更改为.NET Standard 2.0。就是这样。完成此操作后,库中的某些功能可能会失败(requires

.NET Framework的任何功能,即Windows特定的API)。到那时,您要么需要重写库的那些部分以使用.NET Standard兼容的API,要么使用编译器指令将.NET Standard 2.0 / .NET Core的替代实现作为子实现,此时,您需要必须对库进行多目标定位(即.NET Framework .NET Standard 2.0甚至是.NET Core)。编译时,将为每个特定目标生成DLL,从而使您可以从针对任何库目标的项目中无缝引用同一库。

如果对库中的ASP.NET Core组件进行任何处理,则应将代码分解到单独的库中,然后直接在其中定位.NET Core 3.1。瞄准.NET Standard 2.1没有意义,因为无论如何,该代码将仅适用于.NET Core。您还应该朝相反的方向工作。换句话说,如果有任何[.only

适用于.NET Framework项目(Web窗体等),则将其分解为仅针对.NET Framework的单独库。这样您就可以更轻松地将库的其余部分迁移到.NET Standard 2.0。
© www.soinside.com 2019 - 2024. All rights reserved.