我正在使用 C# 中的一些 F# 类型(Matrix等),因此我需要在我的 C# 项目中引用 FSharp.Core 程序集。到现在为止还挺好。
但是,显然 mscorlib.dll (v4) 中定义了一些类型,这些类型在 FSharp.Core (v2) 中“重复”,例如System.Tuple
和System.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)\参考程序集\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.dll'
显然,解决这个问题的方法是C# 编译器命令行上的一个开关,它给 type 起别名:
csc.exe MyType.cs /reference:System.Tuple`2=mscorlib.dll /reference:FSharp.Core.dll
但是,我找不到让 Visual Studio 将此参数发送到 C# 编译器的方法。
有人对此有解决方案吗?