7

XPProfessionalを実行しているリモートマシンにさまざまなバージョンの.NETFramework(バージョン1.1から4.0)をインストールしました。私もReactiveExtensionをインストールしました。

ここにあるSystem.Threadingを参照しているため、自分のマシンで動作するアプリケーションもあります:C:\ Program Files \ Microsoft Reactive Extensions \ redist \ desktopV2 \ System.Threading.dll

GACにも2つのバージョンのDLLがあります。

2つの質問:

i)ファイルを参照するのではなく、リストから選択したときに、これが参照するバージョン(インスタンス)であるとVisual Studioが判断したのはなぜですか?

ii)System.Threadingがリモートマシンに存在しないのはなぜですか?(私はそれがフレームワークのコア部分だと思いました)

ありがとう

4

2 に答える 2

10

System.Threading.dllは.NET4.0で追加されました(名前空間 System.Threadingはv1から存在していますが)。Rxには、.NET3.5SP1にバックポートされたバージョンのSystem.Threading.dllが含まれています。

.NET3.5をターゲットにしているようです。この場合、ランタイムは4.0のみのSystem.Threading.dllをロードしません(明らかに)。プログラムにRxバージョンのSystem.Threading.dllを含めないと、ロードは失敗します。

質問に直接答えるには:

  1. Rxは、独自のプライベートディレクトリをフレームワーク拡張として登録します。これは、VSによって検出される方法です。
  2. System.Threading.dllは.NET4.0にのみ含まれているため、以前のフレームワークをターゲットにしている場合は見つかりません。

この問題を解決するには、プログラムのターゲットを.NET 4.0にするか、プログラムにRxのSystem.Threading.dllを含めます。

PS最新バージョンのRxにアップグレードすることをお勧めします。このdesktopV2フォルダは、過去数回のリリースでは使用されていません。アップグレードするときは、最初に古いバージョンをアンインストールしてください。そうすればうまく機能します。

于 2010-08-04T13:32:48.010 に答える
0

i)参照リストには、登録されているコンポーネントのすべてのバージョンが表示されている必要があります。特定のバージョンを選択したか、リストにない場合は、登録が解除されているか、削除されている必要があります。

ii)System.Threadingはフレームワーク1以降に存在し、マシン上にない場合は、登録解除または削除されている必要があります。

Reactive Extensionsを知りません。検索した後、System.Threading.dllが削除されるかどうかについて多くの情報を見つけることができません。

于 2010-08-04T13:01:57.533 に答える