Xamarin 领域 PlatformNotSupportedException

Posted

技术标签:

【中文标题】Xamarin 领域 PlatformNotSupportedException【英文标题】:Xamarin Realm PlatformNotSupportedException 【发布时间】:2017-02-10 11:49:27 【问题描述】:

我已通过 Nuget 将 Realm 安装到我的 Xamarin PCL 和我的 android 项目中,当我尝试运行任何 Realm 代码行时,我收到以下异常:

System.PlatformNotSupportedException: The PCL build of Realm is being linked which probably means you need to use NuGet or otherwise link a platform-specific Realm.dll to your main application.

我研究了各种 Realm 论坛,典型的建议是确保每个设备项目也安装了 Realm 包,我已经有了,所以这不是解决方案。有关如何解决此问题的任何想法?

【问题讨论】:

【参考方案1】:

为每个平台特定项目打开您的 csproj 文件。确保其中引用的 dll 来自 NuGet 包中的平台特定文件夹。

如果您看到此错误,您很可能会看到它来自 portable-net45+sl5+wp8+wpa81+win8+monoandroid+Xamarin.ios10+Xamarin.Mac

您希望该引用指向 MonoAndroid44、Xamarin.iOS10、Xamarin.Mac 等。不是便携式的。修复此问题,您将修复您的异常。

【讨论】:

我在 Realm 版本的 Android 项目中有这个:<HintPath>..\..\packages\Realm.0.82.1\lib\MonoAndroid44\Realm.dll</HintPath> 我已将此标记为答案,虽然它并不完全正确,但它确实直接引导我找到了解决方案:导致错误的不是 Realm DLL 错误,而是 Remotion .Linq DLL。我的 Android 项目文件包含以下内容:<Reference Include="Remotion.Linq, Version=2.1.0.0, Culture=neutral, PublicKeyToken=fee00910d6e5f53b, processorArchitecture=MSIL"> <HintPath>..\..\packages\Remotion.Linq.2.1.1\lib\portable-net45+win+wpa81+wp80\Remotion.Linq.dll</HintPath> <Private>True</Private> </Reference>,“portable-net45...”位应为“MonoAndroid44”

以上是关于Xamarin 领域 PlatformNotSupportedException的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms UWP UI 测试

微软收购Xamarin,你怎么看?

c#开发移动APP-Xamarin入门

c#开发移动APP-Xamarin入门1

net core体系-Xamarin-1概要

共享项目中的 Xamarin Realm,错误“Fody 未正确安装”