7

这很奇怪。

我有两个项目都是 F#。我已经通过 NUGET 安装了最新的稳定版 (2.1.30214.0) RX。

在项目中,一切都很好。在另一个项目中,由于以下原因,我基本上到处都是错误。

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 的可移植库,只支持遗留库。在VS 2013中添加了对更新的可移植库(也称为基于 .NETCore 的库)的支持。

因此,您有 2 个选择:

  • 在Rx 开源版本中构建 Rx.sln 的 Release45 或 Debug45 目标,并使用它而不是 Rx NuGet 包。

  • 使用 Visual Studio 2013 中提供的 F# 3.1。

于 2013-10-02T20:55:19.667 回答
2

我也有这个问题,我通过编辑 fsproj 并在所有反应性 dll 路径中用 Net40 替换 Net45 来修复它。尽管我的 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 回答