I'm using some F# types (Matrix et al) from C# and so I need to reference the FSharp.Core assembly in my C# project. So far, so good.
However, there are apparently some types defined in mscorlib.dll (v4) which are "duplicated" in FSharp.Core (v2), like System.Tuple
and System.IObservable
. I can't understand why this is in .Net 4. Matt Ellis specifically said they would be removed in his MSDN article:
One language suffering that [duplication] problem was F#, which previously had defined its own tuple type in FSharp.Core.dll but will now use the tuple added in Microsoft .NET Framework 4.
I'm ready to look past this particular unseemly duplication if I could just specify which one I want to use in my C# program, however. When I try to use the System.Tuple
type, for example, I get the following C# compiler error:
Error 2 The type 'System.Tuple' exists in both 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\Profile\Client\mscorlib.dll' and 'c:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.dll'
The way around this, apparently, is a switch on the C# compiler command line which aliases the type:
csc.exe MyType.cs /reference:System.Tuple`2=mscorlib.dll /reference:FSharp.Core.dll
However, I can't find a way to get Visual Studio to send this parameter to the C# compiler.
Anyone have a solution to this?
FSharp. Core contains functionality for basic F# definitions, operations for collections such as lists, maps and sequences, and library functionality for quotations, reflections, events, asynchronous programming and native interoperability.
F# and C# both compile to . NET libraries. You can build code for F# in C#, and you can build code for C# in F#. You can convert F# code to C# with dnSpy.
In F# 6 we've added a new declarative feature that allows code to optionally indicate that, if an argument is determined to be a lambda function, then that argument should itself always be inlined at call sites.
You need to reference the 4.0 version of the F# runtime. This version corresponds with the 4.0 version of mscorlib and does not have the conflicting types. They will be in this directory
C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v4.0
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With