假设我有以下功能.
let rec fib n = match n with | 1 | 2 -> 1 | n -> fib(n-1) + fib(n-2)
如何将该代码编译成dll,以便它从C#中使用?
我使用单声道(在Mac OS X)和Visual Studio 2010.
我添加了以下命令空间.
namespace MyMath.Core module public Process=
和fsc – 目标:库facto.fs给我facto.dll.
using System; using MyMath.Core; class TestFSharp { public static void Main() { int val = MyMath.Core.Process.fib(10); Console.WriteLine(val); } }
dmcs /r:facto.dll testf.cs给我tesetf.exe.
解决方法
那么,如果你把它放在Program.fs文件中,并把它编译成一个
library(使用–target:library),那么它会从C#出现
Program.fib(5)
但是,如果您打算将F#代码暴露给C#,则可能需要使用命名空间和类型.请参阅F# Component Design Guidelines了解更多信息.