2016-04-05 1 views
11

J'ai essayé les éléments suivants:Comment pouvez-vous inclure des références à des ensembles externes dans les fonctions 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; 
} 

-je obtenir ce qui suit quand je clique sur le bouton « Enregistrer » dans le portail Azure:

2016- 04-05T21: 28: 31 Bienvenue, vous êtes maintenant connecté au service de connexion . 2016-04-05T21: 28: 33.443 Script pour la fonction 'ProbeEventHubTrigger' modifié. Rechargement 2016-04-05T21: 28: 33.443 Script de fonction de compilation. 2016-04-05T21: 28: 33,568 (2,22): erreur CS1002:; attendu 2016-04-05T21: 28: 33,568 (3,22): erreur CS1002:; expected 2016-04-05T21: 28: 33.568 (2,7): erreur CS0246: le type ou le nom d'espace de nom 'Newtonsoft' est introuvable (manque-t-il une directive en utilisant une directive ou une référence d'assembly?) 2016-04 -05T21: 28: 33.568 (3,7): erreur CS0246: le type ou le nom d'espace de noms 'Newtonsoft' n'a pas pu être trouvé (vous manque une directive using ou une référence d'assembly?) 2016-04-05T21: 28 : 33.568 (8,24): erreur CS0103: le nom 'JObject' ne n'existe pas dans le contexte actuel 2016-04-05T21: 28: 33.568 La compilation a échoué.

J'ai aussi essayé ce qui suit:

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

Dans ce cas, je reçois le texte suivant lorsque je tape sur le bouton "Enregistrer" dans le portail Azure:

2016-04-05T21 : 35: 36 Bienvenue, vous êtes maintenant connecté au service . 2016-04-05T21: 35: 38.428 Script pour la fonction 'ProbeEventHubTrigger' modifié. Rechargement 2016-04-05T21: 35: 38.428 Script de fonction de compilation. 2016-04-05T21: 35: 38.571 (2,1): erreur CS0006: Impossible de trouver le fichier de métadonnées 'Newtonsoft.Linq' 2016-04-05T21: 35: 38.571 (8,24): erreur CS0103: le nom « jobject » ne existe pas dans le contexte actuel

Il est pas évident de la documentation comment référencer ces ensembles. Je vois dans un exemple la syntaxe est "using Newtonsoft.Json", mais cela ne semble pas fonctionner dans le portail. Aucune suggestion?

Répondre

20

Steve,

.NET Framework ensembles et quelques "partagés" assemblées may be added with the following syntax:

#r "AssemblyName" 

Ainsi, pour JSON.NET, vous pouvez utiliser:

#r "Newtonsoft.Json" 

Une fois la référence ajoutée, , puis, vous pouvez ajouter vos instructions d'utilisation comme vous le feriez dans un règlement. ar C# projet/fichier:

using Newtonsoft.Json; 

Donc, en résumé, vous devez ajouter une référence aux assemblées que vous souhaitez utiliser, et importer les espaces de noms exposés par cette assemblée afin que vous puissiez utiliser ses types.Ceci est similaire à ce que vous feriez dans Visual Studio, où vous ajoutez la référence d'assembly, puis ajoutez vos instructions using là où vous en avez besoin.

J'espère que cela aide!

+0

Merci. Vous pouvez envisager de mettre à jour les exemples dans votre documentation pour le montrer. –

+1

Merci, Steve. Nous travaillons activement sur des échantillons et de la documentation pour couvrir les choses manquantes et les rendre plus faciles à découvrir. Certaines des informations que j'ai partagées sont couvertes ici: https://azure.microsoft.com/fr-fr/documentation/articles/functions-reference/#referencing-external-assemblies mais n'hésitez pas à continuer à poser des questions sur SO et MSDN si vous ne parvenez pas à trouver les informations que vous recherchez dans les documents. Nous y arriverons :) –

+0

Merci Fabio. Jusqu'à présent, je suis impressionné par la simplicité avec laquelle vous pouvez supprimer les messages d'un concentrateur d'événements et les exporter dans DocumentDB. Bon travail! –