我有一个针对.Net 4.5.2的多项目Visual解决方案。在其中一个项目( 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?
发布于 2016-12-22 09:04:08
这在关于github的这一期中得到了解释。长话短说-反应扩展的新版本在RxUI 7.0的开发周期中出现得很晚,所以团队决定跳过这个版本。它帮助人们维护现有的应用程序--他们可以同时升级RxUI版本而不影响Rx版本。计划在RxUI 8.0发行版中依赖最新的Rx。
由于System.Reactive 3.0引入的API不多(它更多地是关于基础设施和基础设施),以及RxUI 7.0已经非常接近的事实,所以决定在下一个主要版本中更容易忽略这一点。 是的,随着所有的基础设施工作到位,我们的目标是保持RxUI 8发布周期的重点。
一边的音符。Rx2.x已经很长一段时间(2014年)没有更新了,这个事实并没有看上去那么糟糕--这是一项非常可靠的技术,你可以放心地使用它。升级到3.0并没有改变多少API(也没有引入破坏性的更改),所以如果您现在坚持使用2.x,那么在项目周期的后期升级应该不会很痛苦。
尽管如此,如果您今天真的想在RxUI中使用Rx3.0,我建议您加入工程松弛通道并参与这个项目,方法是测试不断流失的边缘版本,并贡献自己:)
https://stackoverflow.com/questions/41268764
复制相似问题