我要将我的项目从.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为目标。
这真的让我感到困惑。我在这里误解了吗?
答案 0 :(得分:0)
链接中的页面上有另外一个表,描述了.NET Standard支持:https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support
在.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 framework
到netcore
或netstandard
目标netstandard2.x
或netcore___2.x
之一目标几乎无痛地迁移。
尝试将现有的大型网络框架项目迁移到netstandard 1.x
或netcore 1.x
是一种痛苦的经历。由于netcore2存在,所以现在既痛苦又徒劳。 Netcore 1.x缺少许多您刚希望在Net Framework项目中使用的NetFramework API。因此,您迁移的项目无法构建,您需要进行大量的工作来对其进行修复。
但是,如果您将现有代码移至新的Netstandard / netcore 2项目中,则大多数Framework 4.x API都已存在,并且只需少量更改即可完成更多工作。显然,您必须重新添加NuGet和其他依赖项。
对于不能正常工作的事情,我写了一个关于multi-targeting netframework/netcore的博客,其中包括有关在两个目标之间移动的一些陷阱的部分。