FSharp.Data 'System.MissingMethodException' при вызове провайдера Freebase из C#

Привет, у меня есть этот фрагмент кода на F#, если я тестирую его из F# Interactive Editor, оба метода isPalindrome и Extract работают хорошо:

namespace Portable3
open FSharp
open FSharp.Data
open Microsoft.FSharp.Linq 
open FSharp.Data.FreebaseOperators
open MyTrip.Model.MyTrip
open MyTrip.Model.FreeBase
open System.Runtime
open System.Linq

module math = 
let isPalindrome (str : string) = 
 let rec check(s : int, e : int) =
    if s = e then true
    elif str.[s] <> str.[e] then false
    else check(s + 1, e - 1)
 check(0, str.Length - 1)

 [<AutoOpen>]
 module Extractor =

[<Literal>] 
let FreebaseApiKey = "AIzaSyCO31Ls"
type FreebaseDataWithKey = FreebaseDataProvider<Key=FreebaseApiKey>

let Extract mid = let dataWithKey = FreebaseDataWithKey.GetDataContext()
                  let place = dataWithKey.Commons.Travel.``Travel destinations``.Where( fun x-> x.MachineId = mid) |> Seq.toList                           
                  let result = new Place()   
                  let firstPlace = place.Head
                  result.Name <- firstPlace.Name                      
                  result

И я вызываю этот код из консольного приложения C# следующим образом:

 class Program
{
    static void Main(string[] args)
    {
        //Works well
        var isPalin = math.isPalindrome("ABsBA");
        //fails
        var res = Extractor.Extract("/m/04jpl");
        Console.WriteLine(res);
        Console.Read();

    }
}

Консольный проект C# - это версия.net Framework 4.5.1, я также скачал FSharp.Data и FSharp.Core для этого проекта. При выполнении isPalindrome работает хорошо, но когда я собираюсь выполнить метод Extract, появляется эта ошибка:

An unhandled exception of type 'System.MissingMethodException' occurred in FsharpConsoleTest.exe

Additional information: Method not found: 'FSharp.Data.Runtime.Freebase.FreebaseDataContext   FSharp.Data.Runtime.Freebase.FreebaseDataContext._Create(System.String, System.String, System.Boolean, System.String, System.Boolean, System.Boolean)'.

Есть идеи о том, что происходит? Я искал в интернете, но ничего не нашел. Спасибо!

1 ответ

Решение

Проблема в конце заключалась в использовании переносимой библиотеки с FSharp.Data. Я попытался использовать его в обычной библиотеке F#, и я не нашел никаких проблем, у меня были все возможности отладки, и никаких ошибок от интеграции C# с F# не происходит!

Другие вопросы по тегам