如何創建可以從C#Xamarin Android項目調用的F#PCL?如何從一個Xamarin Android C#項目中調用返回字符串選項的PCL中的F#方法?
東西簡單,像這樣在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,版本= 3.78.3.1,文化=中立, 公鑰= b03f5f7f11d50a3a」
但它不是我清楚如何進行實際管理,包括正確的FSharp.Core在C#項目中。
原來,添加的NuGet到C#項目不工作 - 你只得到我正在問的錯誤。 –
如果可以將PCL版本的FSharp.Core添加到C#項目(而不是您認爲正確的項目),那麼您幾乎肯定不會想要這樣做,包含的PCL F#項目(如果您試圖包含使用printfn的F#項目,會發生什麼情況,例如,如果您的最終項目試圖使用PCL FSharp.Core) –
我編輯了我的答案並添加了一個替代方案,使用安裝了VS/XS而不是nuget包的FSharp.Core程序集。 關於nuget軟件包,您是否添加了正確版本的軟件包? 3.78.3.1表示F#3.1。 最後是的,有很多項目引用不同的FSharp.Core會打破東西;但最終可以通過[綁定重定向](https://fsharp.github.io/2015/04/18/fsharp-core-notes.html#use-binding-redirects-for-applications)將其修復爲最高版本,在實際運行的應用程序上。 FSharp.Core實現是二進制兼容的。 – krontogiannis