サンプルの adwords.csv ファイルを含め、fslab が提供する FSharp.Data csv プロバイダーを使用して csv ファイルを読み込めません。
以下のこのエラーはどういう意味ですか? また、Visual Studio エディターでコードにカーソルを合わせると、「指定されたキーが辞書に存在しませんでした」と表示されます。
問題の例:
#load "packages/FsLab/FsLab.fsx"
open System.IO
open FSharp.Data
"adwords.csv"
|> File.ReadAllLines
let test = CsvProvider<"adwords.csv">.GetSample()
出力:
>
val it : string [] =
[|"Criteria ID,Name,Canonical Name,Parent ID,Country Code,Target Type,Status";
"1000010,Abu Dhabi,"Abu Dhabi,Abu Dhabi,United Arab Emirates",9041082,AE,City,Active";
"1000011,Ajman,"Ajman,Ajman,United Arab Emirates",9047096,AE,City,Active";
"1000012,Al Ain,"Al Ain,Abu Dhabi,United Arab Emirates",9041082,AE,City,Active";
"1000013,Dubai,"Dubai,Dubai,United Arab Emirates",9041083,AE,City,Active";
"2004,Afghanistan,Afghanistan,,AF,Country,Active"|]
>
>System.MethodAccessException: Attempt by method '<StartupCode$FSI_0007>.$FSI_0007.main@()' to access method 'FSharp.Data.Runtime.CsvFile`1<System.__Canon>.Create(System.Func`3<System.Object,System.String[],System.__Canon>,
at <StartupCode$FSI_0007>.$FSI_0007.main@() in C:\test.fsx:line 11
Stopped due to error
私は自分のファイルでこの問題に遭遇したので、ここからこのサンプル ファイルを取得しました: https://raw.githubusercontent.com/fsharp/FSharp.Data/master/tests/FSharp.Data.Tests/Data/Adwords.csv
デバッグ情報:
- FSharp.Data ライブラリ フォルダー (v 2.3.0) を削除し、バージョン 2.2.5 に置き換えると、エラーなく正常に動作します。
FsLab.fsx スクリプトを使用せず、代わりに使用する場合
#I "packages/FSharp.Data/lib/net40 #r "FSharp.Data.dll"
その後、すべてが機能します。- FsLab.fsx スクリプトへのパスは正しく、行を fsi に送信すると実行されます。
- F# のバージョンは 14.0.23413.0 です。
- FSlab によってダウンロードされる FSharp.Data のバージョンは FSharp.Data.2.3.0 です。
- .fsx スクリプトには他に参照がありません。
- Visual Studio Community エディション 14.0.24720.00 Update 1 を使用しています。
- .NET バージョン 4.6.01038
- 以前にこれを使用したときと同じように、.dll を許可するかどうかを尋ねるポップアップが表示されないことに気付きました。