【问题标题】:Why does ReactiveUI have a dependency on an old version of System.Reactive?为什么 ReactiveUI 依赖旧版本的 System.Reactive?
【发布时间】:2017-05-07 05:31:44
【问题描述】:

我有一个针对 .Net 4.5.2 的多项目 Visual Studio 解决方案。在其中一个项目(一个 WPF 应用程序)中,我使用 nuget 添加了 System.Reactive 版本 3.0.1000.0 包,然后是 ReactiveUI 7.0.0.0 包。

在另一个 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?

【问题讨论】:

    标签: c# .net nuget reactiveui reactive


    【解决方案1】:

    这在this issue on github 中有解释。长话短说——新版本的 Reactive Extensions 出现在 RxUI 7.0 开发周期的后期,所以团队决定在这个版本中跳过它。它可以帮助人们维护现有的应用程序——他们可以升级 RxUI 版本而不会同时碰撞 Rx 版本。 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 并参与该项目,通过测试最前沿的版本并做出自己的贡献:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      • 2019-12-25
      • 2017-07-17
      • 2021-03-03
      • 2022-08-21
      • 2018-05-03
      相关资源
      最近更新 更多