C# からいくつかの F# 型 ( Matrixなど) を使用しているため、C# プロジェクトで FSharp.Core アセンブリを参照する必要があります。ここまでは順調ですね。
ただし、 mscorlib.dll (v4) で定義されているいくつかの型は、FSharp.Core (v2) で「複製」されているようSystem.Tuple
ですSystem.IObservable
。なぜこれが .Net 4 にあるのか理解できません。Matt Ellis は、MSDN の記事でそれらが削除されると具体的に述べています。
その [重複] 問題に苦しんでいる言語の 1 つは F# で、以前は FSharp.Core.dll で独自のタプル型を定義していましたが、Microsoft .NET Framework 4 で追加されたタプルを使用するようになりました。
ただし、C# プログラムで使用したいものを指定できれば、この特定の見苦しい重複を回避する準備ができています。System.Tuple
たとえば、型を使用しようとすると、次の C# コンパイラ エラーが発生します。
エラー 2 タイプ 'System.Tuple' が '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'
どうやら、これを回避する方法は、C# コンパイラ コマンド ラインのスイッチで、 type のエイリアスを作成することです。
csc.exe MyType.cs /reference:System.Tuple`2=mscorlib.dll /reference:FSharp.Core.dll
ただし、Visual Studio からこのパラメーターを C# コンパイラーに送信する方法が見つかりません。
誰にもこれに対する解決策がありますか?