首页 文章

我是否可以仅使用Xamarin PCL来定位iOS和Android并具有更多.NET功能?

提问于
浏览
9

我需要在Xamarin中创建一个仅针对iOS和Android的库 . 我不需要支持任何其他平台,但我需要尽可能多的.NET功能 .

我看到在Change Targets对话框中无法取消选中Silverlight复选框:

enter image description here

我是否可以创建一个Xamarin便携式类库,仅针对iOS和Android而不支持Silverlight并支持更多.NET功能?

EDIT: 以下是我需要支持的一些类:X509CertificateCollection,SerializationInfo,NameValueCollection . 我还需要System.Web.Services名称空间支持 . 看起来我可以直接在iOS和Android项目中使用所有这些 . 我可以创建具有所有这些功能的PCL吗?

4 回答

  • 1

    如果您尝试定位PCL,您将受到限制,另一种选择是使用Bait-and-Switch NuGet,其设置如下:

    • 共享项目 - 包含所有共享代码

    • Android库项目 - 引用共享项目,因此它获取所有代码

    • iOS库项目 - 引用共享项目,因此它获取所有代码

    • PCL项目 - 空项目,仅包含方法的空存根

    然后创建一个NuGet,其中Android有效负载是Android Library项目,iOS有效负载是iOS Library项目 .

    然后,PCL项目只显示与PCL兼容的API,但实现恰好使用了您需要的所有内容 .

    对于诱饵和开关方法,请参阅:http://log.paulbetts.org/the-bait-and-switch-pcl-trick/

  • 2

    包含 Silverlight 的Profile24,包括 Xamarin.iOSXamarin.Android ,是你得到的最窄的

    仅供参考:我完全同意Matt关于使用Profile111的建议,如果您要进入PCL库方向 . 有时对于我们的项目,只需使用“共享项目”并在需要时在共享代码中使用#if /#else / #end,就会“更快”($ / time) . PCL库非常适合共享,但如果你不需要留下框架片的心痛,那么共享的项目方向今天可以解决今天的问题...... ;-)

    截至Xamarin 4.1版本,增加了两个新的配置文件:

    Profile 44  (.NET Framework 4.5.1, Windows 8.1) (netstandard 1.2)
    Profile 151 (.NET Framework 4.5.1, Windows 8.1, Windows Phone 8.1) (netstandard 1.2)
    

    旧的:

    Profile 5   (.NET Framework 4,     Windows 8)
    Profile 6   (.NET Framework 4.0.3, Windows 8)
    Profile 7   (.NET Framework 4.5,   Windows 8)
    Profile 14  (.NET Framework 4,     Silverlight 5)
    Profile 19  (.NET Framework 4.0.3, Silverlight 5)
    Profile 24  (.NET Framework 4.5,   Silverlight 5)
    Profile 37  (.NET Framework 4,     Silverlight 5, Windows 8)
    Profile 42  (.NET Framework 4.0.3, Silverlight 5, Windows 8)
    Profile 47  (.NET Framework 4.5,   Silverlight 5, Windows 8)
    Profile 49  (.NET Framework 4.5,   Windows Phone Silverlight 8)
    Profile 78  (.NET Framework 4.5,   Windows 8, Windows Phone Silverlight 8)
    Profile 92  (.NET Framework 4,     Windows 8, Windows Phone 8.1)
    Profile 102 (.NET Framework 4.0.3, Windows 8, Windows Phone 8.1)
    Profile 111 (.NET Framework 4.5,   Windows 8, Windows Phone 8.1)
    Profile 136 (.NET Framework 4,     Silverlight 5, Windows 8, Windows Phone Silverlight 8)
    Profile 147 (.NET Framework 4.0.3, Silverlight 5, Windows 8, Windows Phone Silverlight 8)
    Profile 158 (.NET Framework 4.5,   Silverlight 5, Windows 8, Windows Phone Silverlight 8)
    Profile 225 (.NET Framework 4,     Silverlight 5, Windows 8, Windows Phone 8.1)
    Profile 255 (.NET Framework 4.5,   Silverlight 5, Windows 8, Windows Phone 8.1)
    Profile 259 (.NET Framework 4.5,   Windows 8, Windows Phone 8.1, Windows Phone Silverlight 8)
    Profile 328 (.NET Framework 4,     Silverlight 5, Windows 8, Windows Phone 8.1, Windows Phone Silverlight 8)
    Profile 336 (.NET Framework 4.0.3, Silverlight 5, Windows 8, Windows Phone 8.1, Windows Phone Silverlight 8)
    Profile 344 (.NET Framework 4.5,   Silverlight 5, Windows 8, Windows Phone 8.1, Windows Phone Silverlight 8)
    

    http://danrigby.com/2014/05/14/supported-pcl-profiles-xamarin-for-visual-studio-2/

  • 6

    PCL配置文件(几乎)相同,包括或不包括Silverlight,您只能访问PCL程序集 .

    但是,Xamarin Forms已经允许您应对这一点,在每个平台上都有.Droid和.iOS项目,在这些项目中,您可以使用完整的.net框架 .

    要从这些项目中访问代码,您需要Dependency Services,如果您想为Android和iOS使用相同的代码,则需要shared projects .

    基本上,将所有共享编码放在共享项目中,实现接口,将其注册为依赖服务,在Forms代码中检索它,这样您就可以获得对完整框架的支持 .

  • 7

    正如文本告诉你的那样,它将自动添加silverlight,因为不会削减功能 . 因此将不再有可用的功能 .

    另一方面,我建议使用 Profile111 (参见SushiHangover答案中的列表) . 一方面,这允许您稍后将Windows 10添加为目标平台,并且大多数PCL似乎都支持此配置文件,因为Silverlight将会死(Silverlight 5是最后一个,Windows Phone是UWP)

相关问题