. net Core和pcl之间的区别是什么?
本文关键字:区别 是什么 之间 Core pcl net | 更新日期: 2023-09-27 18:06:14
我最近正在为我的PCL编写支持的平台,其中之一是其他PCL。我很困惑,如果我的库(目标。net Framework 4.5和Windows/Phone 8.1)也可以在。net Core项目中使用。
据我所知,pcl允许您跨多个平台共享代码而无需重新编译,而。net Core也可以做到这一点。唯一的区别是。net Core针对的是少数几个平台,比如OS X和Linux,而且是开源的。
所以本质上,我看不出。net Core和微软重新命名PCL有什么不同,并说"注意我们要开源,瞄准非windows平台!"
所以底线是,pcl是否与。net Core兼容,反之亦然?它们之间有什么区别?
有一篇关于它的漂亮的系列文章,解决了我对它的疑问。
https://oren.codes/2015/06/16/demystifying-pcls-net-core-dnx-and-uwp-redux/https://oren.codes/2015/07/29/targeting-net-core/
。Net Core的所有库(例如System.IO)都在单独的NuGet包中(它们中的每一个都可用于sdk DNX, UWP和。Net 4.6)。第三方库的目标是dnxcore50
(DNX)或uap10.0
(UWP),如果它们本地访问平台或依赖于它们的特性。如果他们不访问平台,而只依赖于其他软件包,他们应该针对dotnet
。
dotnet
有效地意味着:我兼容任何满足我的依赖的平台(你的库XYZ"dotnet"使用System。反射dnxcore5+net45
不能被UWP uap10.0
应用程序使用)。这有效地结束了平台的组合噩梦。以前的目标组合dnxcore5+net45
在平台库之间创建了一个交集,而每个添加的库会使情况变得更糟。另一边的dotnet
不限制目标上的库,而是将这个限制决策转发给它的依赖项(在那里突然出现新的限制,比如著名的unicorn
平台)。
因此,作为一个库的作者,如果你只需要其他库,你可以瞄准dotnet
。
回答你的问题:
- 你的PCL兼容。net核心风格的环境,如DNX和UWP,如果你添加目标
- 。Net Core不仅仅是一组pced库。它是一个新的CLR,一个新的有组织的框架(打包成小的部分)和新的。net sdk (DNX, UWP,以及接下来的任何东西)的基础设施。术语"。Net Core"同时针对基类库"CoreFx"和CLR"CoreCLR"。但真正的平台实际上是由ASP开发的DNX。. Net团队)和UWP(由Windows团队)。
dotnet
, dnxcore50
或uap10.0
取决于你的库的需要(见欧文的文章相同的基本兼容性与合同配置文件259)。所有这些答案都是我目前对。net Core库情况的理解。这项工作正在进行中,就像在帖子中提到的那样,尚未公开记录。
注意DEC 2016:请注意,dotnet
作为netstandard1.x
的前身,其概念从netstandard2.x
()开始发生了变化。. NET Core 2.0;~ 2017年6月)。从netstandard2.0
开始,将有一个公共契约(netstandard.dll),所有平台(.NET Core, .NET Framework, Xamarin, Mono, Unity3D)实现。该契约将随着时间的推移而扩展,平台必须放弃对最新标准的支持,抛出notimplemtedexception或实现它。
我的理解是两者在概念上是不同的。
- 。.NET Portable建立在。NET Full,。NET Core, Windows Phone等平台上,作为"桥接层"。
- 它实际上没有具体的实现,可以把它看作是一个"接口"(契约)集合的"包"。
- . net Portable 'Package'的范围是动态的,取决于你要'桥接'的'目标'平台。这是你所瞄准的平台的交集,平台越多,包就越小。
- 在运行时,这个可移植层被挂钩/适应于。net full,。net core或…