2016-04-05 13 views
11

ho provato la seguente:Come si includono riferimenti a assembly esterni nelle funzioni Azure

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; 
} 

ottengo il seguente quando ho colpito il pulsante "Salva" nel portale Azure:

2016- 04-05T21: 28: 31 Benvenuto, ora sei connesso al servizio log-streaming . 2016-04-05T21: 28: 33.443 Script per la funzione 'ProbeEventHubTrigger' modificato. Ricarico. 2016-04-05T21: 28: 33.443 Script di funzione di compilazione. 2016-04-05T21: 28: 33.568 (2,22): errore CS1002:; previsto 2016-04-05T21: 28: 33.568 (3,22): errore CS1002:; previsto 2016-04-05T21: 28: 33.568 (2,7): errore CS0246: Impossibile trovare il tipo o il nome dello spazio dei nomi "Newtonsoft" (manca un utilizzando la direttiva o un riferimento all'assembly?) 2016-04 -05T21: 28: 33.568 (3,7): errore CS0246: Impossibile trovare il tipo o il nome dello spazio dei nomi "Newtonsoft" (manca una direttiva using o un riferimento all'assembly?) 2016-04-05T21: 28 : 33.568 (8,24): errore CS0103: il nome "JObject" non è non esiste nel contesto corrente 2016-04-05T21: 28: 33.568 Compilazione non riuscita.

Ho anche provato il seguente:

#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 questo caso ottengo il seguente quando ho colpito il tasto "Salva" nel portale Azure:

2016-04-05T21 : 35: 36 Benvenuto, ora sei connesso al servizio di log-streaming . 2016-04-05T21: 35: 38.428 Script per la funzione 'ProbeEventHubTrigger' modificato. Ricarico. 2016-04-05T21: 35: 38.428 Script di funzione di compilazione. 2016-04-05T21: 35: 38.571 (2,1): errore CS0006: Impossibile trovare il file di metadati "Newtonsoft.Linq" 2016-04-05T21: 35: 38.571 (8,24): errore CS0103: The nome 'jobject' non non esiste nel contesto attuale

non è evidente dalla documentazione come fare riferimento a queste assemblee. Vedo in un esempio la sintassi è "utilizzando Newtonsoft.Json", ma questo non sembra funzionare nel portale. Eventuali suggerimenti?

risposta

20

Steve,

.NET Framework assemblee e qualche "condivise" assemblee may be added with the following syntax:

#r "AssemblyName" 

Così, per JSON.NET, è possibile utilizzare:

#r "Newtonsoft.Json" 

Una volta aggiunto il riferimento, quindi è possibile aggiungere le istruzioni using come si farebbe in un regul ar C# project/file:

using Newtonsoft.Json; 

Così, in sintesi, è necessario aggiungere un riferimento alle assemblee che si desidera utilizzare, e importare gli spazi dei nomi esposti da quell'assemblea in modo da poter utilizzare i suoi tipi.Questo è simile a quello che dovresti fare in Visual Studio, in cui aggiungi il riferimento all'assembly e quindi aggiungi le tue istruzioni using dove ne hai bisogno.

Spero che questo aiuti!

+0

Grazie. Potresti voler considerare l'aggiornamento degli esempi nella tua documentazione per mostrarlo. –

+1

Grazie, Steve. Stiamo lavorando attivamente su campioni e documentazione per coprire le cose mancanti e renderle più individuabili. Alcune delle informazioni che ho condiviso sono trattate qui: https://azure.microsoft.com/en-us/documentation/articles/functions-reference/#referencing-external-assemblies ma sentitevi liberi di continuare a fare domande su SO e MSDN se non riesci a trovare le informazioni che stai cercando nei documenti. Ci arriveremo :) –

+0

Grazie Fabio. Finora sono rimasto impressionato dalla semplicità con cui è possibile deselezionare i messaggi da un hub eventi e scaricarli in DocumentDB. Bel lavoro! –