.Netstandard2是在.Net Core2.0和is 2017.3中发布的,其中包含了nuget4.3和API表面覆盖32k (41个类除外)和全封面net461
现在可以使用VisualStudio2017 15.3从.NET标准库引用.NET框架库。随着时间的推移,这个特性帮助您将.NET框架代码迁移到.NET标准或.NET Core (从二进制文件开始,然后移到源代码)。在源代码不再可访问或.NET框架库丢失的情况下,它也很有用,使其仍可在新的场景中使用。 我们预计这个特性将在.NET标准库中最常用。它也适用于.NET核心应用程序和库。它们也可以依赖.NET框架库。 支持的场景是引用一个.NET框架库,该库碰巧只使用.NET标准API集中的类型。此外,只支持针对.NET Framework4.6.1或更早版本的库(甚至.NET Framework1.0也可以)。
因此,在.netcore2环境中,我们可以像很多年一样继续构建/使用完整的.Net框架,而不需要切换到.netstandard2库。
对于多目标项目(net64;netstandard2 2),我们可以在相同的.net覆盖范围内免费获得标准2.0 (零时间工作)。
您能否分享您的经验:我们能否继续构建完整的Framework4.6.1类库并在.netcore2中使用它?限制是什么?
发布于 2017-09-28 13:04:30
在构建.NET框架库时,只能在.NET标准中使用4.6.1。如果您想使用一个更新的API,例如netstandard2.0或netcoreapp2.0中的.NET 4.7,则需要将您的库重定向到4.7,这样netstandard2.0 /netcoreapp2.0项目就无法使用它。实际上,您被锁定在.NET框架4.6.1版本中,并且可以(/should)永远不会将其更新到较新的版本。(当然,有一个解决方法,包括禁用隐式回退定义并在消费项目中手动设置AssetTargetFallback,但它需要手动编辑.csproj文件并指示所有包使用者这样做)。
此外,兼容性层并不能防止使用未在网络标准上实现的API,因此,消费项目可能会获得有关缺少类型、方法、程序集等的异常。只有当您针对.NET标准时,您的库才能保证在.NET标准一致性平台上工作。
目前的一个实际限制是引用.NET框架库项目(!)(不是NuGet包)来自.NET核心是不可能的/只适用于特定的设置和解决方案(您将得到不兼容的目标框架警告)。
https://stackoverflow.com/questions/46457736
复制相似问题