2017-05-29 9 views
3

私はスクリプトとしてherokuにF#アプリを導入しています。私は非常に奇妙な問題を抱えています。私は例の以下のエラーは以下に示す取得しますが、いないよ、他:なぜ、配列のレコードが英雄の型初期化エラーを引き起こすのですか?

System.TypeLoadException:ロードできませんでした型「FSI_0007 +テスト[]」 アセンブリ「FSI-ASSEMBLY、バージョンから= 0.0 .0.0、Culture =ニュートラル、 PublicKeyToken = null '。 (ラッパーで管理されるネイティブ)(System.Reflection.MonoMethod、object、object []、System.Exception &)、 System.Reflection.MonoMethod.Invoke(System.Object obj 、のBindingFlags invokeAttr、System.Reflection.Binderバインダー、System.Objectの[] パラメータ、可能System.Globalization.CultureInfo培養)< 0x410a5830 + 0x000b7>:0

エラーケース:

type Test = { Test: string } 
printfn "%A" [|{Test = "test"}|] <--- error here 

の作業例:

printfn "%A" [|"test"|] 

type Test = { Test: string } 
printfn "%A" {Test = "test"} 

printfn "%A" [{Test = "test"}] 

だから、私は、配列内のレコードを置くことができないように見えますが、私は、配列内の任意の組み込み型を置くことができます。また、レコードをリストに入れることもできます。そして、それだけで記録は大丈夫です。

レコードと配列の組み合わせでエラーが発生するのはなぜですか?

私はここbuildpackを使用しています:モノ4.4.2.11使用 https://github.com/SuaveIO/mono-script-buildpack

ビジュアルスタジオではローカルfsiでは発生しません。

+0

バグのようです。リテラルを記録するだけですか?つまり、レコードをバインドできるようにして、配列要素のバインドを使用できますか? – scrwtp

+0

また、配列開始演算子 '[|'とレコード開始演算子 '{'?との間にスペースを入れるとどうなりますか?何かが3つの文字 '[{{{'が2つのトークンではなく1つのトークンとして間違って解析されているかもしれません。もしそうなら、 '[| {...} |] 'は解析のバグを回避する必要があります。 – rmunn

+0

@rmunnこのエラーは英雄でのみ発生します。 – mydogisbox

答えて

3

これは非常によくthis bug in monoのように見えます。

この問題の影響を受けたモノのバージョンが不明で、バグの議論のレポートに少し矛盾がありますが、最新の安定版mono 4.8.0が少なくとも1人で動作するようです。 。

別の回避策は、コードをコンパイルして実行可能ファイルとして開始した(というよりもF#インタラクティブ経由で実行してfsxファイルを使用して)されるようにfsprojを使用するようにあなたのウェブサイトを変更するだろう - 私は、コンパイルされたコードは、このバグに悩まされないと思います(またはMono Reflectionに関連するその他の潜在的なバグ)。

+0

これは問題のようです!残念ながら私はスクリプトを使用するように切り替えました。なぜなら、slnを使用するときにWebサービスを開始する方法を理解できなかったからです。 https://stackoverflow.com/questions/35681957/deploy-websharper-suave-web-application-to-herokuには詳細が不十分です。 – mydogisbox

+0

@mydogisboxルートに 'sln'ファイルがあるように見えます:https://github.com/SuaveIO/mono-script-buildpack/blob/master/bin/compile#L67 –

+1

私はそれを理解しました。私は自分のprocファイルを "web:mono src/ProjectName/bin/Debug/executable.exe"に設定する必要がありました。 – mydogisbox

関連する問題