2016-04-05 15 views
11

habe ich versucht, die folgenden:Wie Sie enthalten Verweise auf externe Baugruppen in Azure Funktionen

using System; 
using Newtonsoft.Json 
using Newtonsoft.Linq 

public static void Run(string myEventHubMessage, out string document, TraceWriter log) 
{ 
    log.Verbose($"C# Event Hub trigger function processed a message: {myEventHubMessage}"); 
    dynamic jsonData = JObject.Parse(myEventHubMessage); 
    document = jsonData; 
} 

ich folgendes, wenn ich drücken Sie die Schaltfläche "Speichern" in Azure-Portal:

2016- 04-05T21: 28: 31 Willkommen, Sie sind jetzt mit dem Protokoll-Streaming-Dienst verbunden. 2016-04-05T21: 28: 33.443 Skript für Funktion 'ProbeEventHubTrigger' geändert. Neuladen. 2016-04-05T21: 28: 33.443 Funktionsskript kompilieren. 2016-04-05T21: 28: 33.568 (2,22): Fehler CS1002:; erwartet 2016-04-05T21: 28: 33.568 (3,22): Fehler CS1002:; erwartet 2016-04-05T21: 28: 33.568 (2,7): Fehler CS0246: Der Typ oder Namespacename 'Newtonsoft' konnte nicht gefunden werden (fehlt eine mit Direktive oder einer Assemblyreferenz?) 2016-04 -05T21: 28: 33.568 (3,7): Fehler CS0246: Der Typ oder Namespacename 'Newtonsoft' konnte nicht gefunden werden (fehlt eine Verwendungsrichtlinie oder eine Baugruppenreferenz?) 2016-04-05T21: 28 : 33.568 (8,24): Fehler CS0103: Der Name 'JObject' ist nicht im aktuellen Kontext vorhanden 2016-04-05T21: 28: 33.568 Compilation fehlgeschlagen.

Ich habe auch versucht die folgenden:

#r "Newtonsoft.Json" 
#r "Newtonsoft.Linq" 
using System; 

public static void Run(string myEventHubMessage, out string document, TraceWriter log) 
{ 
    log.Verbose($"C# Event Hub trigger function processed a message: {myEventHubMessage}"); 
    dynamic jsonData = JObject.Parse(myEventHubMessage); 
    document = jsonData; 
} 

In diesem Fall habe ich die folgenden, wenn ich die Schaltfläche "Speichern" in der Azure-Portal getroffen zu werden:

2016-04-05T21 : 35: 36 Willkommen, Sie sind jetzt mit dem Protokoll-Streaming-Dienst verbunden. 2016-04-05T21: 35: 38.428 Skript für Funktion 'ProbeEventHubTrigger' geändert. Neuladen. 2016-04-05T21: 35: 38.428 Funktionsskript kompilieren. 2016-04-05T21: 35: 38.571 (2,1): Fehler CS0006: Metadatendatei 'Newtonsoft.Linq' konnte nicht gefunden werden 2016-04-05T21: 35: 38.571 (8,24): Fehler CS0103: The Name ‚JObject‘ hat nicht im aktuellen Kontext existiert

aus der Dokumentation nicht klar ist, wie diese Versammlungen zu verweisen. Ich sehe in einem Beispiel die Syntax "mit Newtonsoft.Json", aber das scheint nicht im Portal zu funktionieren. Irgendwelche Vorschläge?

Antwort

20

Steve,

Framework-Assembly und ein paar "shared" Baugruppen may be added with the following syntax:

#r "AssemblyName" 

Also, für JSON.NET, können Sie verwenden:

#r "Newtonsoft.Json" 

Sobald die Referenz hinzugefügt wurde, dann können Sie Ihre Verwendung Anweisungen hinzufügen, als würden Sie in einem Regulier ar C# Projekt/file:

using Newtonsoft.Json; 

So in der Zusammenfassung, müssen Sie einen Verweis auf die Baugruppen hinzufügen, die Sie verwenden möchten, und importieren, um die von dieser Versammlung ausgesetzt Namensraum, so dass Sie seine Typen verwenden können.Dies ist ähnlich wie in Visual Studio, wo Sie die Assembly-Referenz hinzufügen und dann Ihre using-Anweisungen dort hinzufügen, wo Sie sie benötigen.

Ich hoffe, das hilft!

+0

Danke. Vielleicht möchten Sie die Beispiele in Ihrer Dokumentation aktualisieren, um dies zu zeigen. –

+1

Danke, Steve. Wir arbeiten aktiv an Beispielen und Dokumentationen, um fehlende Dinge zu erfassen und besser sichtbar zu machen. Einige der Informationen, die ich geteilt habe, werden hier behandelt: https://azure.microsoft.com/en-us/documentation/articles/functions-reference/#referencing-external-assemblies, aber zögern Sie nicht, Fragen zu SO und MSDN zu stellen, wenn Sie können die gesuchten Informationen nicht in den Dokumenten finden. Wir kommen dorthin :) –

+0

Danke Fabio. Bisher bin ich beeindruckt von der Einfachheit, mit der Sie Nachrichten von einem Ereignis-Hub aus der Warteschlange ziehen und in DocumentDB ablegen können. Gute Arbeit! –

Verwandte Themen