.NET 4.5和F#上RX的奇怪问题



这很奇怪。

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

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

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中工作得很好。

有什么建议吗?

正如@Mark Seemann所指出的,问题源于.NET 4.5的Rx-NuGet包实际上是一个可移植库。

不幸的是,F#3.0不支持基于.NET 4.5的可移植库,只支持遗留库。VS 2013中增加了对较新的可移植库(也称为基于.NETCore的库)的支持。

所以,你有两个选择:

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

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

我也有这个问题,我通过编辑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

一切顺利!虽然丑陋得可怕,但它折磨着项目中的所有文件。

当您在4.0项目中引用4.5 DLL时会发生这种情况,反之亦然。确保你引用的是正确的版本。

这不是Mike在这里记录的臭名昭著的nuget/F#错误,是吗?

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

相关内容

  • 没有找到相关文章

最新更新