如何创建可以从C#Xamarin Android项目调用的F#PCL?
简单,就像在PCL中一样:
namespace FSharpPCL2
type Class1() =
member this.X (s: string option) =
s
|> Option.map (fun t -> t + "stuff")
尝试从C#Xamarin Android项目中调用它,您将收到类似这样的编译器错误:
MainActivity.cs(26,41):错误CS0012:类型
Microsoft.FSharp.Core.FSharpOption
1'定义在一个 未引用的程序集。考虑添加引用 程序集`FSharp.Core,Version = 3.78.3.1,Culture = neutral, 公钥= b03f5f7f11d50a3a'
但我不清楚你是如何在C#项目中实际包含正确的FSharp.Core的。
答案 0 :(得分:2)
你应该看看FSharp.Core guidelines,它解释了你在这些场景中的选择。
在您的情况下,您可以在C#-xamarin项目中向FSharp.Core nuget package添加包引用。 FSharp.Core, Version=3.78.3.1
是F# 3.1/Profile 78
。您可以通过查看References>中的版本/路径来确保引用所需的版本。 FSharp.Core>属性。如果没有,您可以编辑csproj并将路径更改为适当的版本。
另一种方法是直接向FSharp.Core添加引用,该引用随Visual / Xamarin Studio一起提供
%PROGRAMFILES(X86)%\Reference Assemblies\Microsoft\FSharp\.NETCore\3.78.3.1\FSharp.Core.dll
或/Library/Frameworks/Mono.framework/Versions/4.4.1/lib/mono/Reference Assemblies/Microsoft/FSharp/.NETCore/3.78.3.1/FSharp.Core.dll