代码之家  ›  专栏  ›  技术社区  ›  codekaizen

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

  •  10
  • codekaizen  · 技术社区  · 16 年前

    我用的是F型( Matrix 所以我需要在我的C项目中引用FSharp.Core组件。到目前为止,还不错。

    但是,mscorlib.dll(v4)中定义的某些类型显然在FSharp.Core(v2)中“重复”,如 System.Tuple System.IObservable Matt Ellis specifically said they would be removed in his MSDN article :

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

    系统.元组

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

    显然,解决这个问题的方法是 a switch on the C# compiler command line which aliases the type :

    有人能解决这个问题吗?

    2 回复  |  直到 16 年前
        1
  •  13
  •   JaredPar    16 年前

    您需要引用4.0版本的F#运行时。此版本与mscorlib的4.0版本相对应,并且没有冲突的类型。它们将在这个目录中

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

        2
  •  4
  •   desco    16 年前

    您可以使用 C# assembly aliases 以及在C代码中显式限定源程序集:例如,如果在F程序集和库中都定义了元组类型。