Xamarin.Forms汇编引用

时间:2017-02-02 14:12:23

标签: c# xamarin

我正在开发适用于Android和iOS的Xamarin.Forms应用程序。 pcl项目增长了很多,安装了许多nuget包,如FluentValidation,SQlite和Newtonsoft.Json。特定于平台的项目只有几行代码,如自定义渲染器和东西。他们唯一的参考是SQlite。

现在,在为Android编译时,此功能正常。但是,在尝试为iOS构建时,我收到错误 - >无法解析引用(System.EnterpriseServices.Wrapper.dll)。

我的问题不是特定于这个dll,而且我想知道它是如何工作的。我假设,我可以在pcl项目中安装我想要的任何包。有限制吗?包装必须与Xamarin.iOS / Xamarin.Android兼容吗?我怎么能跟踪dll实际来自哪里?

为什么它适用于Android而不适用于iOS?

1 个答案:

答案 0 :(得分:1)

是的,平台之间存在限制。您在PCL项目中使用的不同程序集和/或nuget-packages需要与您所针对的平台兼容。

原因很简单:当您构建iOS项目时,PCL项目也在为iOS目标构建,因此程序集需要兼容。程序集只是一个子集。

  

Xamarin.iOS,Xamarin.Android和Xamarin.Mac全部装满了   十几个集会。正如Silverlight是扩展的子集一样   桌面.NET程序集,Xamarin平台也是一个扩展子集   几个Silverlight和桌面.NET程序集。

如果你想使用一个只与android兼容的程序集,那么就把它添加到android-project而不是PCL项目中。

您可以在Xamarin开发者页面上找到包含supported assemblies over the platforms的列表。

在此列表中,您可以看到,System.EnterpriseServices.dll仅适用于Android,而不适用于iOS。另外,你可以在this page的iOS平台上使用SQLite / System.Data找到一些限制。