【问题标题】:.net core & .net framework in the same team.net 核心和 .net 框架在同一个团队中
【发布时间】:2017-09-24 04:36:36
【问题描述】:

我们的开发团队有许多 .net framework 4.6 项目(VS 2015)。 我们想开始一个新的 .net 核心项目,最终部署在 linux 上。

我们已经安装了 VS 2017 和 .net core 2.0 预览版。

但是我们如何才能在这个新项目中重用现有的库项目呢?

我们研究但不清楚: - 我们需要将旧项目的目标从“.Net Framework 4.6”更改为“.NetStandard 1.x”? (并解决不兼容问题) - 或者我们可以这样使用它们? (但如何?)

谢谢

【问题讨论】:

  • 据我所知,您不能像它们一样使用 .Net 桌面库,您必须针对 .Net Core 重新构建它们,并且可能需要花费一些时间 1) 使您的代码在有限的可用范围内运行设施; 2) 测试您的代码以确保其行为方式与原始 .Net 上的行为方式完全相同。例如,据我所知,LINQ 再次使用 Expression 并在 .Net 中编译为 IL,而在 .Net Core 中它被解释。这有时可能是一个明显的差异。
  • @Sergey.quixoticaxis.Ivanov:据我所知,.NET Core 不解释表达式树......从 .NET Core 2.0 开始,桌面程序集也应该可用,我相信 - 这就是计划。
  • @JonSkeet 我目前正在使用 EFCore 开发 UWP 软件,并且正在解析 LINQ 的声明来自 EFCore github 上的一位 MS 人员。也许旧版本是这样,也许它只是 .Net Native 特定的,也许我有什么问题。我不确定。我希望这个计划能很快成为现实,我们会更乐意将我们的服务器端迁移到 Linux,但我们的第一次尝试太耗时,所以我们至少暂时放弃了这个想法。
  • @Sergey.quixoticaxis.Ivanov:我可以很容易地想象这对于 UWP 来说是正确的,但对于其他平台则不然。 github.com/dotnet/corefx/issues/10470 建议它是 UWP...
  • @JonSkeet 是的,.Net Native 问题,感谢您的链接。

标签: c# .net visual-studio .net-core .net-standard


【解决方案1】:

Microsoft 发布移植过程的官方指南:https://docs.microsoft.com/en-us/dotnet/articles/core/porting/

总结一下:

  1. 递归处理您的依赖项(通过迁移它们)
  2. 重新定位您的项目。在可能的情况下,应用程序迁移到 .NET 核心,库迁移到 .NET Standard。
  3. 使用一些有用的工具来验证您的端口
  4. 测试

因此,要在 .NET Framework 和 .NET Core 之间共享内容,您的库应尽可能以 .NET Standard 为目标。否则,您可能会共享代码并且必须进行多次构建 - 构建一次以 .NET Framework 为目标,然后再次以 .NET Core 为目标。

【讨论】:

    【解决方案2】:

    只有在您的新项目中以 Full Framework 为目标时,您才能使用/引用旧项目(如果您要在 Linux 上运行它们,则情况并非如此)。

    如果您从预览开始,则应将旧项目转换为 .Net Core 项目,并以 .NET Core 2.0 预览版或 NetStandard 2.0 预览版为目标。如果您不打算在应用程序之外引用/使用旧项目,那么以 .NET Core 2.0 预览版为目标可能会更好,因为它可能提供比 NetStandard 2.0 预览版更多的 API。

    【讨论】:

      猜你喜欢
      • 2021-01-09
      • 1970-01-01
      • 2019-05-02
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      相关资源
      最近更新 更多