Jam*_* Ko 16 .net c# cross-platform portable-class-library .net-core
我最近为我的PCL编写了支持的平台,其中一个是其他PCL.如果我的库(针对.NET Framework 4.5和Windows/Phone 8.1)也可以在.NET Core项目中使用,我感到很困惑.
据我所知,PCL允许您跨多个平台共享代码而无需重新编译,而.NET Core也可以这样做.唯一的区别是,.NET的核心目标一个数更多的平台,即OS X和Linux,并且是开源的.
基本上,我看不出.NET Core 与PC 重塑PCL有什么不同,并说"请注意我们要开源并针对非Windows平台!"
那么底线是PCL与.NET Core兼容,反之亦然?他们之间有什么区别?
Tho*_*mas 14
有一篇关于它的精美文章系列解决了我的问题......
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.Reflection dnxcore5+net45不能被UWP uap10.0应用程序使用).这有效地结束了平台的组合噩梦.之前的目标组合dnxcore5+net45创建了平台库之间的交集,每次添加都会使情况更糟.dotnet另一方面,不会限制目标上的库,而是将此限制决策转发给其依赖项(突然出现像着名unicorn平台这样的新限制).
因此,作为图书馆作者,dotnet如果您只需要其他库,则可以定位.
回答你的问题:
dotnet,dnxcore50或者uap10.0根据库的需要,您的PCL与.Net Core风格环境(如DNX和UWP)兼容(请参阅Owen的文章,了解与合同Profile 259相同的基本兼容性).所有这些答案都是我目前对.Net核心库情况的理解.这项工作正在进行中,如同在帖子中提到的那样,尚未公开记录.
注意2016年12月:请注意,dotnet作为其前身netstandard1.x改变了它的概念netstandard2.x(.NET Core 2.0; ~JUN 2017).从一开始netstandard2.0就会有一个共同的合同(netstandard.dll),所有平台(.NET Core,.NET Framework,Xamarin,Mono,Unity3D)都可以实现.此合同将随着时间的推移而延长,平台必须放弃对最新标准的支持,抛出NotImplementedException或实现它.