这是一个非常基本的问题。可移植类库可以用于包含函数库而没有UI组件的简单类吗?
是否可以编写非UI类库并在多个平台上共享它?
答案 0 :(得分:1)
可移植类库是否可用于包含函数库且没有UI组件的简单类?
当然,尽管PCL更现代的替代方案是.NET Core库。 PCL在工具方面存在各种问题,并确定了您需要使用的配置文件:.NET Core模型很多更简单。 (沿着project.json
等方式出现了一些曲折,但最终的.NET Core SDK现在已经出局......您将希望Visual Studio 2017能够与它一起开发。)< / p>
是否可以编写非UI类库并在多个平台上共享它?
绝对 - 这正是Noda Time和Json.NET之类的项目所做的。 (免责声明:我是Noda Time的主要作者,所以显然有偏见:)
这里有点微妙,因为可移植项目通常作为NuGet包分发,但NuGet包中可以有多个不同的程序集,针对不同的框架。例如,Noda Time 2.0定位netstandard1.3
和net45
- 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。这是一种新方式,使用起来更简单。