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

Dav*_*ave 7 .net f# system.reactive

这很奇怪.

我有两个项目都是F#.我通过NUGET安装了最新的稳定版(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'.`
Run Code Online (Sandbox Code Playgroud)

这真的没有意义,因为源代码很好并且在VS2010中完美运行.

有什么建议?

lin*_*nna 7

正如@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.


Ana*_*tts 1

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