现在,您可以使用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中使用它吗?有什么限制?
答案 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>