随着netstandard 2.0和netcore 2.0的最终发布,我们为什么要关注构建netstandard2库,同时我们可以使用完整的框架4.6.1

时间:2017-09-27 21:47:37

标签: c# asp.net-core-2.0 .net-core-2.0 .net-4.6.1 .net-standard-2.0

<。> .Netstandard2最终发布.Net Core 2.0和vs2017.3,nuget4.3和API表面覆盖32k(41级除外)和全封面net461

引自Announcing .NET Core 2.0

  

现在,您可以使用Visual Studio 2017 15.3从.NET标准库引用.NET Framework库。此功能可帮助您随着时间的推移将.NET Framework代码迁移到.NET Standard或.NET Core(从二进制文件开始,然后转移到源代码)。它对于.NET Framework库不再可访问或丢失源代码的情况也很有用,使其仍然可以在新场景中使用。

     

我们希望此功能最常用于.NET标准库。它也适用于.NET Core应用程序和库。它们也可以依赖于.NET Framework库。

     

支持的方案是引用.NET Framework库,该库只碰巧使用.NET Standard API集中的类型。此外,它仅支持面向.NET Framework 4.6.1或更早版本的库(甚至.NET Framework 1.0也可以)。

因此,在.netcore2环境中,我们可以继续构建/使用Full .Net Framework,就像我们多年来一样,无需切换到.netstandard2库。

使用多目标项目(net64; netstandard2),我们可以获得具有相同API覆盖率的.net标准2.0免费(零时间工作)。

您能否分享一下您的经验:我们可以继续构建Full Framework 4.6.1类库并在.netcore2中使用它吗?有什么限制?

1 个答案:

答案 0 :(得分:0)

构建.NET Framework库时,只能将4.6.1与.NET Standard一起使用。如果您想使用更新的API,例如netstandard2.0或.NET 4.7,您需要将库重新定位到4.7,然后netstandard2.0 / netcoreapp2.0项目不能使用它。实际上,您已被锁定在.NET Framework 4.6.1版中,并且(/应该)永远不会将其更新为更新版本。 (当然,有一种解决方法,包括禁用隐式回退定义并在使用项目中手动设置AssetTargetFallback,但它需要手动编辑.csproj文件并指示所有包消费者这样做。 / p>

此外,兼容层不能防止使用未在netstandard上实现的API,因此消费项目可能会获得有关缺少类型,方法,程序集等的异常。只有当您以.NET Standard为目标时,您的库才能保证正常工作在.NET标准符合平台上。

目前的一个实际限制是,从.NET Core引用.NET Framework库项目(!)(而不是NuGet包)是不可能的/仅适用于特定的设置和变通方法(您将获得不兼容的目标框架警告)。 / p>