2016-12-21 50 views
7

我有一個針對.Net 4.5.2的多項目Visual Studio解決方案。在其中一個項目(一個WPF應用程序)中,我使用nuget添加了System.Reactive版本3.0.1000.0包和ReactiveUI 7.0.0.0包。爲什麼ReactiveUI對舊版本的System.Reactive有依賴性?

在另一個項目,該項目是WPF應用程序使用的類庫,我只是簡單地添加了System.Reactive版本3.0.1000.0包。

的ReactiveUI包似乎取決於舊組反應性包(RX-Core2.2.5等)。我可以告訴這是因爲WPF應用程序項目文件中的HintPaths指向諸如packages \ Rx-Core.2.2.5 \ lib \ net45 \ System.Reactive.Core.dll的位置

當我構建並運行應用程序我得到一個FileLoadException,因爲至少有一個項目試圖使用錯誤的dll版本。以下是典型的....

System.IO.FileLoadException occurred 
    HResult=0x80131040 
    Message=Could not load file or assembly 'System.Reactive.Linq, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

我也許可以通過降級整個解決方案的所有System.Reactive包2.2.5解決這一問題了,但,這似乎是一個很老的版本(2014)。

爲什麼ReactiveUI拉動的依賴上System.Reactive的V2.2.5?有沒有辦法改變這種行爲,以便我可以在整個解決方案中使用最新版本的System.Reactive?

回答

7

this issue on github解釋。長話短說--Reactive Extensions的新版本在RxUI 7.0的開發週期後期出現,因此團隊決定在本版本中跳過它。它可以幫助人們維護現有的應用程序 - 他們可以在不碰撞Rx版本的情況下升級RxUI版本。 RxUI 8.0版本計劃依賴最新的Rx。

As @shiftkey states it:

由於該System.Reactive 3.0中引入了輕微的API客戶流失(這是更多的基礎設施,並把事情進入基礎),而事實上,RxUI 7.0已經如此接近,它因此決定將下一個主要版本留下來更容易。

是的,現在所有的基礎設施工作都已經到位,我們正致力於保持RxUI 8發佈週期的重點。

一邊注意。 Rx 2.x在很長一段時間(2014年)沒有更新的事實並不像它看起來那麼糟糕 - 這是一個非常可靠的技術,您可以毫無顧慮地使用它。升級到3.0並沒有改變太多的API(並沒有引入重大改變),所以如果你現在堅持使用2.x,稍後在項目週期中的升級不應該是痛苦的。

不過,如果你真的想利用今天的Rx 3.0 RxUI,我建議你加入project slack channel和參與該項目,通過測試前沿發佈和貢獻自己:)

+0

謝謝 - 有用的信息。 :-) – NeilMacMullen