我创建了一个使用F#和ReactiveUI的Xamarin Android项目。使用Xamarin Android与F#和ReactiveUI的运行时错误
当加载我的信息中心内,我会遇到在inherit
线此代码段的一个运行时异常(的MissingMethodException
型):
type DashboardViewModel(?host: IScreen) =
inherit ReactiveViewModel()
let host = LocateIfNone host
member __.Title with get() = "Dashboard"
interface IRoutableViewModel with
member __.HostScreen = host
member __.UrlPathSegment = "Dashboard"
错误消息读取
方法“Microsoft.FSharp .Quotations.FSharpExpr.Deserialize40'找不到。
的ReactiveViewModel
类型是围绕ReactiveObject
瘦包装:
type ReactiveViewModel() as this =
inherit ReactiveObject()
let mutable message = noMessage
let uiContext = SynchronizationContext.Current
member __.SyncContext with get() = uiContext
member this.Message
with get() = message
and set(value) =
this.RaiseAndSetIfChanged(&message, value, "Message") |> ignore
if message <> noMessage then this.RaiseAndSetIfChanged(&message, noMessage, "Message") |> ignore
member val MessageSent =
this.WhenAnyValue(toLinq <@ fun vm -> vm.Message @>).ObserveOn(RxApp.MainThreadScheduler).Where(fun m -> m <> noMessage) with get
该项目是开源:此刻,它含有非常少的内容。它可以在https://github.com/SpiegelSoft/Astrid找到。
我已经提交了关于Xamarin bug跟踪系统中的错误:https://bugzilla.xamarin.com/show_bug.cgi?id=51000
存在任何已知的修复我可以实现我自己,这样我就可以闭上自己的协议的错误吗?
更新1
我这个周末一直在研究这个问题。
加载的FSharp.Core版本卡住了过时版本2.3.98.1。这相当于FSharp.Core.dll
文件中
C:\ Program Files文件(x86)的\参考 大会\微软\框架\ MonoAndroid \ V1.0
我曾试图删除这个版本和负载NuGet包FSharp.Core;但是,当我构建Android项目时,路径始终会回到参考程序集路径中的废弃文件。
有没有办法来覆盖这种行为?
更新2
在Reference Assemblies
路径更换FSharp.Core.dll
文件修复该问题,但是这是一个非常不理想橡皮膏,我不能让我的用户应用。理想情况下,我想找到一种方法来阻止.Droid
项目从GAC加载FSharp.Core
而不是NuGet包。
我想'MissingMemberException'相当于'MissingMethodException'。如果是这样,这里的一些现有的帖子可能对你有帮助:http://stackoverflow.com/search?q=%5Bf%23%5D+MissingMethodException –
我的错误 - 这是一个'MissingMethodException'。问题修正。 –
这些是IME,总是由版本冲突引起的。 –