2017-05-06 61 views
1

这是一个非常基本的问题。可移植类库可用于包含函数库和无UI组件的简单类吗?仅适用于Xamarin的可移植类库吗?

是否可以编写非UI类库并在多个平台上共享?

+0

是你甘蔗分享它,但它是有限的参考。我之前在Silverlight中使用过.net基础应用程序没有限制使用它和它的跨平台 –

回答

1

便携式类库是否可用于包含函数库和无UI组件的简单类?

当然,虽然更现代的PCL替代品是.NET Core库。 PCL在工具方面存在各种问题,并计算出您需要使用哪种配置文件:.NET Core模型更容易更简单。 (已经有一些曲折和沿途曲折,与project.json等,但最终.NET核心SDK现已脱离,你会需要的Visual Studio 2017年用它来开发。)

是有可能编写一个非UI类库并在多个平台上共享它?

绝对 - 这正是像Noda TimeJson.NET这样的项目。 (免责声明:我是野田时间的主要作者,所以显然有偏见:)

这里有一点微妙之处在于,可移植项目通常以NuGet包的形式分发,但NuGet中可以有多个不同的程序集包,针对不同的框架。例如,Noda Time 2.0的目标为netstandard1.3net45 - netstandard1.3程序集不支持二进制序列化,或者不支持TimeZoneInfo作为net45程序集。

1

“这是一个非常基本的问题。”

嗯,你其实列出了三个问题,对不对?我看到Jon Skeet在主体中友好地回答了这两个问题。

所以我只专注于“仅适用于Xamarin的便携式类库?”

当微软在推出.NET Framework 4.0之后提出PCL的想法时,他们的目标是在.NET Framework/Silverlight/Windows Phone等之间共享代码。事实上,他们一开始就没有考虑Xamarin。尽管他们肯定认识Mono和Xamarin。

PCL要求CLR支持可重定目标的类元数据,该元数据当时计划用于.NET Framework 4.5及更高版本。 Microsoft确实将必要的位移回到.NET Framework 4.0,后来作为补丁发布。

可能在微软的帮助下,Mono/Xamarin后来可以改进CLR实现,以便PCL组件可以被使用。他们甚至从微软的帮助下发布Linux和Mac的PCL参考程序集,以便您可以针对它们编译项目。

在初次发布后添加了诸如“portable-net45 + netcore45 + MonoAndroid1 + MonoTouch1”之类的PCL配置文件,并且对NuGet也进行了类似的更改,Mono/Xamarin正式成为.NET生态系统的一部分而他们实际上已在那里多年)。

现在,你应该简单地忘记PCL,并且拥抱.NET标准。这是新的方式,使用起来更简单。

相关问题