Ich verwende den F # -Typ Provider zum ersten Mal in Azure-Funktionen. Hier ist die run.fsx Datei:Azure-Funktionen und F # Json-Typ Provider
#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>) =
()
Hier wird die project.json Datei:
{
"frameworks": {
"net46": {
"dependencies": {
"FSharp.Data": "2.3.2"
}
}
}
}
sample.json im selben Ordner wie die anderen Dateien befindet sich
Wenn ich laufen es, ich bekomme das:
> 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'
Irgendwelche Vorschläge? Dank
Das hat funktioniert - danke. Ich fragte Don Syme, was __SOURCE_DIRECTORY__ ist, sagte er "Errr. Ein Hack?" –
Im Idealfall würden Azure-Funktionen das Arbeitsverzeichnis für eine Funktionsausführung auf diese Funktion festlegen. Derzeit nicht. SOURCE_DIRECTORY sieht wie ein Makro aus, das in das Verzeichnis der F # -Quelldatei aufgelöst wird, etwa wie folgt: $ env: HOME + '/ site/wwwroot//'. Dies ist definitiv der einfachste Weg, dies zu tun, da ich glaube, dass das Ändern des Funktionsarbeitsverzeichnisses das Arbeitsverzeichnis für andere .net-Funktionen ebenfalls ändern könnte. –
Das obige Muster (mit der HOME-Umgebungsvariablen + Pfad) ist der empfohlene Ansatz für jetzt. Wir planen, dies auf eine bequemere Weise zu enthüllen, so dass Sie nicht durch Reifen springen müssen. –