2017-02-06 9 views
1

Azure関数で初めてF#Typeプロバイダを使用しています。ここでAzure関数とF#Json型プロバイダ

#r "FSharp.Data" 
#r "Microsoft.WindowsAzure.Storage" 

open System 
open FSharp.Data 
open Microsoft.WindowsAzure.Storage.Table 

type Tweet = JsonProvider<"sample.json"> 

let Run (queueItem: string, tweets: ICollector<Tweet>) = 
    () 

project.jsonファイルされる:ここでrun.fsxファイルがある

{ 
    "frameworks": { 
    "net46": { 
     "dependencies": { 
     "FSharp.Data": "2.3.2" 
     } 
    } 
    } 
} 

sample.jsonが他のファイルと同じフォルダに配置されて

私は実行それ、私はこれを得ています:

 
> 2017-02-06T13:40:22.946 
> D:\home\site\wwwroot\TweeterDataCleaner\run.fsx(9,14): error FS3033: 
> The type provider 'ProviderImplementation.JsonProvider' reported an 
> error: Cannot read sample JSON from 'sample.json': Could not find file 
> 'D:\Windows\system32\sample.json' 

何か提案がありますか?

[<Literal>] 
let sample = __SOURCE_DIRECTORY__ + "/sample.json" 
type Tweet = JsonProvider<sample> 

があれば、私は学ぶことが大好きだ:__SOURCE_DIRECTORY__値を使用して(?一定のシンボル私はそれが正確に何であるかわからない) - おかげ

答えて

2

は、私は同様の問題を持っていたときの回避策が見つかりましたこれを指定するより良い方法です。

+2

これはうまくいきました - ありがとう。私はDon Symeに__SOURCE_DIRECTORY__というものを尋ねました。彼は "Errr。a hack?" –

+0

理想的には、Azure関数は関数実行の作業ディレクトリをその関数に設定します。現在のところ、それはしません。 SOURCE_DIRECTORYは、$ env:HOME + '/ site/wwwroot//'のようなF#ソースファイルのディレクトリに解決されるマクロのように見えます。関数の作業ディレクトリを変更すると、他の.net関数の作業ディレクトリも変更できると思うので、現在のところこれを行うのが最も簡単な方法です。 –

+0

上記のパターン(HOME環境変数+パスを使用)は、今のところ推奨されるアプローチです。私たちはこれをより便利な方法で公開し、あなたがフープを飛び越える必要はありません。 –

関連する問題