2

PowerShell を使用して、Akka.Net アクターを使用する F# コードを呼び出そうとしています。

F# コードは、単体テストおよび F# インタープリターから実行すると正常に動作しますが、PowerShell コマンドレットから同じコードを呼び出すと、次の例外が発生します。

System.MissingMethodException: Method not found: 'Void Nessos.FsPickler.BinarySerializer..ctor(Microsoft.FSharp.Core.FSharpOption`1<Boolean>, 
                    Microsoft.FSharp.Core.FSharpOption`1<Nessos.FsPickler.ITypeNameConverter>)'.
                       at Akka.FSharp.Serialization.ExprSerializer..ctor(ExtendedActorSystem system)
                       at Akka.FSharp.Serialization.exprSerializationSupport(ActorSystem system)
                       at Namespace.NewActorCmdlet..ctor(Host hostA, Host hostB, Boolean option, UserDetails user) in 
                    E:\Projects\Namespace\NewActorCommand.fs:line 24
                       at Namespace.StartNewActorCommand.ProcessRecord() in 
                    E:\Projects\Namespace\StartNewActor.fs:line 67
                       at System.Management.Automation.CommandProcessor.ProcessRecord()

その PowerShell セッションで実行[Nessos.FsPickler.BinarySerializer]::new.OverloadDefinitionsして、PS が使用可能なメソッドを確認したところ、次のようになりました。

Nessos.FsPickler.BinarySerializer new(Microsoft.FSharp.Core.FSharpOption[bool] forceLittleEndian, Microsoft.FSharp.Core.FSharpOption[Nessos.FsPickler.ITypeNameConverter] typeConverter)

私が最初に気付いたのは、PowerShell によって表示されるバージョンが FSharpOption[Boolean] の代わりに FSharpOption[bool] を取ることでした。Option を明示的に渡すように Akka.FSharp コードを変更しようとしましたが、それは役に立たなかったようです。

私は FSharp.Core 4.0.0.1 を使用しています (他のリンクでは 3.0 に問題があることが示唆されています)。

誰かが似たようなものを見たことがありますか?

問題を探す場所についての提案も役に立ちますが、問題が PowerShell、F#、または Akka.Net にあるのかどうかはわかりません。

4

1 に答える 1