2016-05-07 7 views
1

私はF#プロジェクトでそうのように定義された.NETクラスを持っている「方法が見つかりません」:消費のF#:取得

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#のユニットテストプロジェクトからこれを実行しますそして、ASP.NETのapplciation、私はこの取得しています:

見つからない方法: 「Microsoft.FSharp.Control.FSharpAsync`1

このクラスはまた、Uされている1つの、他の方法を持っています

message.Content.ReadAsStringAsync().Result 

非同期でinteropが失敗する原因はありますか?私はその方法を呼んでいないのですが?

+0

バインディングリダイレクトをFSharp.Coreに追加します。 –

答えて

1

Fyodor Soikin氏のコメントによれば、単体テストプロジェクトとテストしようとしているものとの間で、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がほしいと言った。リダイレクトは機能しませんでした。 F#プロジェクトの4.3への挑戦は十分に機能しました。ありがとう –

関連する問題