2016-05-07 6 views
1

У меня есть класс .NET, определенный как и в # проекта F:Потребляя F # от C# проекта: Получение «метод не найден»

type public StockAnalyzer() = 
    member public this.GetStockClose ticker = 
     try 
      let stockInfo = YahooContext.Load("http://ichart.finance.yahoo.com/table.csv?s=" + ticker) 
      let mostRecent = stockInfo.Rows |> Seq.head 
      (float)mostRecent.``Adj Close`` 
     with 
      | :? System.Net.WebException -> -1.0 

Когда я пытаюсь запустить это из C# модульного тестирования проекта и applciation ASP.NET, я получаю это:

метод не найден: «Microsoft.FSharp.Control.FSharpAsync`1

Этот класс также имеет 1 другой метод, являются U sing

message.Content.ReadAsStringAsync().Result 

Это связано с тем, что interop не работает при асинхронном режиме? Хотя я даже не называю этот метод?

+0

Добавить переадресацию привязки для FSharp.Core –

ответ

1

Чтобы расширить то, что сказал Федор Сойкин в своем комментарии, это часто происходит в результате несогласованных версий FSharp.Core между проектным модулем и тем, что вы пытаетесь протестировать.

Вы можете создать переадресацию привязки, которая перенаправляет ссылки на другую версию FSharp.Core. Вы можете сделать это путем создания App.config файла в проекте, он должен выглядеть примерно так:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    ... 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
      <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.1.0" /> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

См: https://fsharp.github.io/2015/04/18/fsharp-core-notes.html#use-binding-redirects-for-applications

Эта страница, очевидно, также полезно для другой информации, вам может понадобиться на FSharp.Core.

P.S. Обратите внимание на номера версий. Возможно, вам действительно нужно перенаправить на FSharp.Core версии 4.4.0.0 (F # 4.0)

+0

F # является 4.4, поэтому я добавил FS.Core 4.4 в C# и он сказал, что нужно 4.3. Переадресация не работала. Chaning F # project to 4.3 работал достаточно хорошо. благодаря –

 Смежные вопросы

  • Нет связанных вопросов^_^