我創建了一個使用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,總是由版本衝突引起的。 –