在C#项目中包含FSharp.Core:解决类型冲突

cod*_*zen 10 c# f# csc visual-studio

我正在使用C#中的一些F#类型(Matrix等),所以我需要在我的C#项目中引用FSharp.Core程序集.到现在为止还挺好.

但是,显然在mscorlib.dll(v4)中定义了一些在FSharp.Core(v2)中"重复"的类型,如System.TupleSystem.IObservable.我无法理解为什么这是在.Net 4.Matt Ellis明确表示他们将在他的MSDN文章中删除:

一种遭受[重复]问题的语言是F#,它以前在FSharp.Core.dll中定义了自己的元组类型,但现在将使用Microsoft .NET Framework 4中添加的元组.

如果我能指定我想在C#程序中使用哪一个,我已经准备好了解这个特别不合时宜的重复.System.Tuple例如,当我尝试使用该类型时,我得到以下C#编译器错误:

错误2"c:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\Profile\Client\mscorlib.dll"和"c:\ Program Files"中都存在"System.Tuple"类型(x86)\ Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.dll'

显然,解决这个问题的方法是在C#编译器命令行上切换该类型的别名:

csc.exe MyType.cs /reference:System.Tuple`2=mscorlib.dll /reference:FSharp.Core.dll

但是,我找不到让Visual Studio将此参数发送到C#编译器的方法.

有人有解决方案吗?

Jar*_*Par 12

您需要引用F#运行时的4.0版本.此版本对应于mscorlib的4.0版本,并且没有冲突类型.他们将在此目录中

C:\ Program Files(x86)\ Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v4.0