web-dev-qa-db-fra.com

Fonctions Azure - classes partagées

Je souhaite utiliser certaines classes partagées sur mes fonctions Azure pour ne pas dupliquer le code.

J'ai essayé de créer une fonction C # vide et de créer les classes dans la fonction, puis de les importer dans les autres fonctions avec:

#r "../Shared/Class.cs"

13
Luís Fura

Commencez par placer votre code partagé dans un dossier situé à la racine de votre répertoire Function App (par exemple, "Shared"). Supposons que je mette une classe Message.csx partagée dans ce dossier (par exemple, le chemin complet D:\home\site\wwwroot\Shared\Message.csx).

Pour l'inclure dans votre fonction, utilisez la commande #load:

#load "..\Shared\Message.csx"

using System;
using Microsoft.Azure.WebJobs.Host;

public static void Run(Message message, TraceWriter log)
{
    log.Info($"C# Queue trigger function processed message: {message.Id}");
}

Voir la page d'aide ici pour plus d'informations. Par défaut, les fichiers de ce répertoire ne font pas l'objet d'un suivi. Si vous voulez vous assurer que lorsque les fichiers de ce répertoire changeront, vos fonctions récupéreront les modifications et seront recompilées, vous pourrez ajouter votre répertoire "Shared" à la liste watchDirectories de Host.json. Par exemple.:

{
    "watchDirectories": [ "Shared" ]
}
25
mathewc

En raison du taux de changement dans Azure Functions, cette approche n'est plus recommandée pour les fonctions C # (voir Feuille de route Outils de Azure Functions ). Reportez-vous aux articles de blog suivants pour obtenir une description des modèles les plus modernes et les plus efficaces pour structurer un projet C # dans Visual Studio et bénéficiez de tous les avantages des DLL partagées, comme vous le feriez normalement en C #. 

https://blogs.msdn.Microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app/

https://github.com/devkimchi/Precompiled-Azure-Functions-Revisited

6
solvingJ

Lorsque vous travaillez avec Visual Studio et que vous recherchez un moyen de partager des fichiers de script C # entre des fonctions de votre application Function, procédez comme suit:

#load "..\Shared\MySharedCode.csx"

Veuillez noter que vous devez définir la propriété "Copier dans le répertoire de sortie" pour les fichiers de votre dossier partagé sur "Copier toujours".

0
M. Veenman