【问题标题】:.Net Core migration path from 2.1 using .Net 4.5 libraries从 2.1 使用 .Net 4.5 库的 .Net Core 迁移路径
【发布时间】:2020-08-03 23:40:15
【问题描述】:

我们有一个正在运行的 .Net Core 2.1 API。 由于遗留原因,我们共享一组当前在 .Net 4.5 中的业务逻辑层程序集,因为它们也被我们的 Windows WinForms .Net 4.5 应用程序使用。

我想将 API 升级到 .Net Core 3.1,但由于这需要 netstandard21,而 .Net 4.5 不会,我想对我的选项提供一些反馈 - 如果我理解正确的话。

在我看来,我们现在被困住了。

如果我将旧程序集升级到 netstandard21 - 我无法从 .Net 4.5 WinForms 应用程序中使用它们

如果我将旧程序集保留在 .Net 4.5 上,我将无法在 .Net Core 3.1 中使用它们 - 因为它们不是 netstandard21

.Net Core 3.1 支持 WinForms - 如果可以在 .Net Core 3.1 兼容版本中找到所有第三方库,那么将旧的 WinForms 应用程序移植到 .Net Core 3.1 是否是一种可行的方法。

最后的选择是等待 .Net 5,也许会慢慢开始使用预览版进行迁移,但我认为这需要我们的第三方库也支持 .Net 5。

有没有人处于相同的偏移量 - 将 .Net Core Api 与 .Net 4.5 库混合在一起 - 您打算如何前进?

我们有 10 年以上的遗留代码 - 所以重新实现不是一种选择。

最好的问候 /安德斯

【问题讨论】:

    标签: .net .net-core


    【解决方案1】:

    您可以创建一个共享项目并在其中添加您的共享业务逻辑,然后创建两个项目,一个用于 WinForms,一个用于 ASP.NET,它们引用了共享项目。

    您可以在此处阅读有关共享项目的更多信息:Shared Projects code sharing

    【讨论】:

    • 我们已经有两种解决方案(一种用于 Api,一种用于 WinForms)——每个都包括多个项目。两个解决方案都引用了其中的 8 个项目。
    • 我的问题更多——这 8 个项目必须能够在 .Net Core 3.1 和 .Net 4.5 运行时中使用什么框架目标
    • 正如您自己所说,没有框架目标可以同时支持两者。因此,我会将这 8 个项目更改为共享项目,以便可以将其维护在一个地方。并且还使用 .net 核心创建 8 个镜像项目,使用 .net 4.5 创建 8 个镜像项目
    • 我们正在讨论多行 100k+ 行代码 - 可能超过 1 mio LOC。尝试在如此庞大的代码库上跨大型团队维护重复代码不是一个有效的选择
    • 代码不重复。您的所有代码都保留在其原始位置。您只需要将项目类型更改为共享项目。而且镜像项目中没有一行代码,只是对共享项目的引用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    相关资源
    最近更新 更多