【问题标题】:Migrating existing project from net framework 4.5.2 to dotnet core or netstandard将现有项目从 net framework 4.5.2 迁移到 dotnet core 或 netstandard
【发布时间】:2019-04-24 04:18:45
【问题描述】:

我正在将我的项目从 .net 框架 4.5.2 移植到 .net 标准。我读过this article for guiding。正如我在那篇文章中看到的那样,.net 框架 4.5.2 应该实现 .net 标准 1.2 或 1.3(如表中所示,有 .net 框架 4.5.1 和 4.6,但没有 4.5.2,所以我不确定)。

因此,它应该适合将我的项目定位到 .net 标准 1.3。 我想,如果我的项目只使用 .net 框架库,我可以重新定位而不会出现任何错误。但是,当我运行.NET Portability Analyzer tool 时。它表明 System.Xml.XPath.XPathNodeIterator 在 .net 框架 4.5.2 中仅受支持,而在 .net 标准 1.3 中不支持。我必须以 .net 标准 2.0 为目标才能使其工作。

这真的让我很困惑。我在这里误解了什么吗?

【问题讨论】:

  • 我想我在这里对 .net 标准有误解。 Net 标准仅包含基础库,并且可以通过版本添加到版本,因此它不会包含相应版本的所有 .net 框架或任何其他框架(.net 核心、xamarin ...)。但是,我仍然对我的情况感到困惑。如果我知道 .net 标准 1.3 与 .net 框架 4.5.2 对应,那么这些信息有什么用?
  • .NET Standard 1.3 API 是 .NET Framework 4.5.2 API 的子集,那么混淆在哪里?
  • 是的,在阅读有关 .net 标准的更多信息后,请参阅。但是,1.3版本有什么意义吗?看来我必须运行 .NET Portability Analyzer 工具(或构建我的项目)来确定合适的 .net 标准版本,并知道它是否为 1.3。
  • blog.lextudio.com/… 使用多目标,然后代码适用于两个世界。

标签: .net .net-standard .net-framework-version .net-standard-2.0


【解决方案1】:

在链接中的页面上,有一个不同的表格描述了 .NET Standard 支持:https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support

  • .NET Framework 4.5.1 支持 .NET Standard 1.2
  • .NET Framework 4.6 支持 .NET Standard 1.3

在 .NET Standard 2.0 之前,XPathNodeIterator 类型不是 .NET Standard 的一部分。您可以使用https://apisof.net/catalog/System.Xml.XPath.XPathNodeIterator 来查看。

如果您的库面向 .NET Standard 1.6,您可以依赖该类型作为 NuGet 包提供该类型。那个包名是System.Xml.XPath

话虽如此,如果您想支持 .NET Standard 以及 .NET Framework,您可以多目标。这将构建 2 个 dll,一个针对 .NET Standard,一个针对 .NET Framework。只要 API 在两个版本中都可用,这应该可以工作。

【讨论】:

    【解决方案2】:

    net framework 几乎无痛地迁移到netcorenetstandard 目标netstandard2.xnetcore___2.x 目标之一。

    尝试将现有的大型网络框架项目迁移到netstandard 1.xnetcore 1.x 是一种痛苦的经历。而且由于 netcore2 存在,它现在既痛苦又徒劳。 Netcore 1.x 缺少很多您希望在网络框架项目中工作的 NetFramework API。因此,您迁移的项目无法构建,您需要做大量工作来修复它。

    但是,如果您将现有代码移动到新的 Netstandard/netcore 2 项目中,那么大部分的 Framework 4.x API 都在那里,而且更多的东西只需很少的更改就可以“正常工作”。显然你必须重新添加 NuGet 和其他依赖项。

    对于那些不能“正常工作”的东西,我写了一篇关于 multi-targeting netframework/netcore 的博客,其中包括关于在两个目标之间移动的一些陷阱的部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      相关资源
      最近更新 更多