在我編寫的庫中,我有一個函數創建Rx ReplaySubject
,並從任務中將某些內容推送給它,將主題返回爲IObservable
供他人觀看(它只是發佈有關任務正在進行的工作的一些進度更新)。在等待Rx時,CurrentPlatformEnlightenmentProvider無法投射到IPlatformEnlightenmentProvider Observable
然後我用了LINQPad庫,調用該函數,並等待觀察到:
scenario.SeedAsync(context).Wait();
然後我被打到與該消息的TypeInitializationException
:
無法轉換類型'System.Reactive.PlatformServices.CurrentPlatformEnlightenmentProvider'的對象來鍵入'System.Reactive.PlatformServices.IPlatformEnlightenmentProvider'。
從我能告訴這些enlightenment providers are a way for Rx to leverage platform specific functionality。我想這意味着它可能是一個版本不匹配或某事,但我找不到任何明顯的東西。我已經檢查過兩側都包含相同版本的Rx,它是我的機器構建庫,我運行的是LINQPad的AnyCPU版本,但該庫也是爲AnyCPU構建的,所以我認爲這應該沒問題。我有點難住。我甚至試着在代碼中處理不同類型的主題和東西,以確保它不是特定於任何這些主題和東西。
我一直無法在Google或SO上找到此錯誤提示。
任何想法?我不確定在這一點上要進一步考慮的地方!
是啊,我現在傾向於同意,我已經坐在上面一小會兒。版本號絕對相同,但LINQPad nuget緩存中的Rx二進制文件的目標平臺可能與庫使用的目標平臺不同。我會看看,看看我能否檢查。 – 2014-10-29 03:03:12
以下可以幫助調試這種問題:typeof(X).Assembly.Location.Dump() – 2014-10-29 03:06:10
原來他們實際上是不同的版本號。兩款應用程序的NuGet探索者列出了相同的版本,但是當我將實際裝配名稱打印出來時,它們是不同的。所以我在幾年前購買了完整的LINQPad許可證之前,在我的LINQPad插件文件夾中尋找並發現了一些錯誤的Rx程序集。面對手掌。 – 2014-10-29 03:29:22