是否只为Xamarin提供便携式类库?

时间:2017-05-06 15:32:53

标签: c# .net core

这是一个非常基本的问题。可移植类库可以用于包含函数库而没有UI组件的简单类吗?

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

3 个答案:

答案 0 :(得分:1)

  

可移植类库是否可用于包含函数库且没有UI组件的简单类?

当然,尽管PCL更现代的替代方案是.NET Core库。 PCL在工具方面存在各种问题,并确定了您需要使用的配置文件:.NET Core模型很多更简单。 (沿着project.json等方式出现了一些曲折,但最终的.NET Core SDK现在已经出局......您将希望Visual Studio 2017能够与它一起开发。)< / p>

  

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

绝对 - 这正是Noda TimeJson.NET之类的项目所做的。 (免责声明:我是Noda Time的主要作者,所以显然有偏见:)

这里有点微妙,因为可移植项目通常作为NuGet包分发,但NuGet包中可以有多个不同的程序集,针对不同的框架。例如,Noda Time 2.0定位netstandard1.3net45 - netstandard1.3程序集不支持二进制序列化,也不支持TimeZoneInfo作为net45 1}}汇编。

答案 1 :(得分:1)

观看此链接:

但是,在创建可移植类库时,可以选择希望代码运行的平台组合。创建可移植类库时所做的兼容性选择被转换为“配置文件”标识符,该标识符描述了库支持的平台。

https://msdn.microsoft.com/en-us/library/gg597391(v=vs.110).aspx https://www.codeproject.com/Articles/647001/What-are-portable-class-libraries

答案 2 :(得分:1)

  

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

嗯,你其实列出了三个问题,对吗?我看到Jon Skeet在主体中善意回答了这两个人。

所以我只关注“仅适用于Xamarin的可移植类库吗?”

当微软在发布.NET Framework 4.0后提出了PCL的想法时,他们的目标是在.NET Framework / Silverlight / Windows Phone等之间共享代码。事实上,他们一开始并没有记住Xamarin。他们肯定知道Mono和Xamarin。

PCL要求CLR支持可重定向的类元数据,当时计划用于.NET Framework 4.5及更高版本。微软确实将必要的部分移植到.NET Framework 4.0中,后来作为补丁提供。

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

首次发布后添加了PCL配置文件,例如“portable-net45 + netcore45 + MonoAndroid1 + MonoTouch1”,并对NuGet进行了类似的更改,因此Mono / Xamarin正式成为.NET生态系统的一部分(同时事实上他们已经存在多年了。)

现在,你应该忘记PCL,并拥抱.NET Standard。这是一种新方式,使用起来更简单。

相关问题