将现有项目从Net Framework 4.5.2迁移到dotnet core或netstandard

时间:2019-03-12 04:13:42

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

我要将我的项目从.net Framework 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,所以我不确定)。 / p>

因此,它应该适合于将我的项目定位为.net标准1.3。  我认为,如果我的项目仅使用.net框架库,则可以重新定位而不会出现任何错误。但是,当我运行.NET Portability Analyzer tool时。它显示System.Xml.XPath.XPathNodeIterator仅在.net Framework 4.5.2中受支持,而在.net标准1.3中不受支持。我必须以.net standard 2.0为目标。

这真的让我感到困惑。我在这里误解了吗?

2 个答案:

答案 0 :(得分:0)

链接中的页面上有另外一个表,描述了.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来查看。

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

话虽如此,如果您想支持.NET Standard和.NET Framework,则可以多目标。这将构建2个dll,一个针对.NET Standard,另一个针对.NET Framework。只要两个版本都提供API,就可以使用。

答案 1 :(得分:0)

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

尝试将现有的大型网络框架项目迁移到netstandard 1.xnetcore 1.x是一种痛苦的经历。由于netcore2存在,所以现在既痛苦又徒劳。 Netcore 1.x缺少许多您刚希望在Net Framework项目中使用的NetFramework API。因此,您迁移的项目无法构建,您需要进行大量的工作来对其进行修复。

但是,如果您将现有代码移至新的Netstandard / netcore 2项目中,则大多数Framework 4.x API都已存在,并且只需少量更改即可完成更多工作。显然,您必须重新添加NuGet和其他依赖项。

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