将现有项目从net framework 4.5.2迁移到dotnet core或netstandard

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

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

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

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

.net .net-standard .net-framework-version .net-standard-2.0
2个回答
0
投票

在链接的页面上有一个描述.NET标准支持的不同表格: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在两个版本中都可用,这应该可行。


0
投票

net framework几乎无痛地迁移到netcorenetstandard目标netstandard2.x,或其中一个netcore___2.x目标。

尝试将大型现有的netframework项目迁移到netstandard 1.xnetcore 1.x是一种痛苦的经历。由于netcore2存在,现在既麻烦又徒劳。 Netcore 1.x缺少很多您希望在网络框架项目中工作的NetFramework API。因此,您迁移的项目不会构建,您需要做很多工作才能解决它。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.