7

これは非常に奇妙です。

F# の 2 つのプロジェクトがあります。RX の最新の安定版 (2.1.30214.0) リリースを NUGET 経由でインストールしました。

プロジェクトでは、すべてがまったく問題ありません。他のプロジェクトでは、次の理由により、基本的にどこでもエラーが発生しています。

Error   1   The type 'IObservable`1' is required here and is unavailable.
            You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, 
            Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.`

ソースは問題なく、VS2010で完全に機能するため、これは本当に意味がありません。

助言がありますか?

4

4 に答える 4

7

@Mark Seemann が指摘したように、この問題は、.NET 4.5 の Rx NuGet パッケージが実際には移植可能なライブラリであるという事実に起因しています。

残念ながら、F# 3.0 は .NET 4.5 ベースのポータブル ライブラリをサポートしておらず、従来のライブラリのみをサポートしています。新しいポータブル ライブラリ (.NETCore ベースのライブラリとも呼ばれる) のサポートがVS 2013に追加されました。

したがって、2 つのオプションがあります。

  • Rx オープン ソース リリースで Rx.sln の Release45 または Debug45 ターゲットをビルドし、Rx NuGet パッケージの代わりにそれを使用します。

  • Visual Studio 2013 で利用可能な F# 3.1 を使用します。

于 2013-10-02T20:55:19.667 に答える
2

fsproj を編集し、すべてのリアクティブ dll パスで Net45 を Net40 に置き換えることで修正しました。これは、私の fsproj ファイルに次のように記載されているにもかかわらず必要です。

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

元の答え:

以前の修正でプロジェクトはコンパイルされましたが、RX を使用できませんでした (まったく無意味です)。

エラーは次の行から発生しています。

open System

今私が持っています:

//open System
type Array = System.Array
type Double = System.Double
type TimeSpan = System.TimeSpan

すべての作品!ひどく醜いですが、プロジェクト内のすべてのファイルに影響を与えます。

于 2013-08-28T05:23:32.287 に答える
1

これは、Mike がここで文書化している悪名高い nuget/F# のバグではありませんね。

http://mikehadlow.blogspot.co.uk/2013/06/nuget-install-is-broken-with-f.html

于 2013-06-26T15:32:22.863 に答える
1

これは、4.0 プロジェクトで 4.5 DLL を参照した場合、またはその逆の場合に発生します。正しいバージョンを参照していることを確認してください。

于 2013-06-26T01:38:28.167 に答える