9

.Net 4.5.2 をターゲットとするマルチプロジェクトの Visual Studio ソリューションがあります。プロジェクトの 1 つ (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 applicatio プロジェクト ファイルの HintPaths が packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll などの場所を指しているためです。

アプリケーションをビルドして実行すると、少なくとも 1 つのプロジェクトが間違った dll バージョンを使用しようとしているため、FileLoadException が発生します。以下は典型的なものです....

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 の最新バージョンを使用できるように、この動作を変更する方法はありますか?

4

1 に答える 1

8

これはgithub のこの問題で説明されています。簡単に言えば、Reactive Extensions の新しいバージョンが RxUI 7.0 の開発サイクルの後半に登場したため、チームはこのリリースではそれをスキップすることにしました。これは、既存のアプリを維持するのに役立ちます。Rx のバージョンを同時に上げることなく、RxUI のバージョンをアップグレードできます。最新の Rx への依存は、RxUI 8.0 リリースで計画されています。

@shiftkeyが述べているように:

System.Reactive 3.0 で導入された小さな API チャーン (インフラストラクチャと基盤への移行に関するものでした) と、RxUI 7.0 がすでに非常に近いという事実により、それを除外する方が簡単であると判断されました。次のメジャー リリース。

はい、すべてのインフラストラクチャの作業が整ったので、RxUI 8 のリリース サイクルに焦点を当て続けることを目指しています。

ひとことメモ。Rx 2.x がこれほど長い間 (2014 年) 更新されていないという事実は、見た目ほど悪くはありません。これは非常に堅実な技術であり、心配することなく使用できます。3.0 へのアップグレードは、API に関して大きな変更はありませんでした (破壊的変更も導入されていませんでした)。そのため、今のところ 2.x に固執している場合、プロジェクト サイクルの後半のアップグレードは苦痛ではないはずです。

とはいえ、今すぐ Rx UI で Rx 3.0 を本当に使用したい場合は、プロジェクトの slack チャンネルに参加してプロジェクトに参加し、最先端のリリースをテストして貢献することをお勧めします :)

于 2016-12-22T09:04:08.503 に答える