Skip to content
Daniel C. Weber edited this page May 17, 2018 · 1 revision

System.Reactive.Compatibility

The System.Reactive.Compatibility package provides a means for applications using Rx 3.x to override and upgrade that dependency to Rx 4. It is a meta-package with dependencies to several packages with assemblies that retain the names and types of Rx 3.x but will forward them to the actual implementation of Rx 4. System.Reactive.Compatibility should usually be installed in any project that may serve as entry-point to user-code, i.e. the main application project and possibly existing unit-test projects. This will ensure that, during package resolution, the nearset wins rule may be applied.

Due to System.Reactive.Compatibility being a meta-package, its dependencies are by default farther away from the application as if they were installed individually. An attempt to install System.Reactive.Compatibility to the main-application might fail when it references a project (not a nuget-package!) within the solution declares a dependency on a lower version of Rx. If that project's dependency can't be avoided (because it's implied by other dependencies), try replacing it explicitly with System.Reactive.Compatibility. Depending on the project-structure in the solution, an explicit dependency on System.Reactive.Compatibility from the main application might then be omitted.