À l'aide d' Azure Functions , puis-je référencer et utiliser des packages NuGet dans ma fonction C #?
c#
azure
azure-functions
nuget-package
azure-web-app-service
Fabio Cavalcante
la source
la source
Réponses:
Oui! Bien que le portail Azure Functions ne fournisse actuellement pas de mécanisme pour ajouter et gérer des packages NuGet, le runtime prend en charge les références NuGet et s'assurera qu'elles sont correctement utilisées lors de la compilation et de l'exécution de vos fonctions.
Pour définir vos dépendances, vous devez créer un
Project.json
fichier avec les références de package NuGet requises. Voici un exemple qui ajoute une référence à laMicrosoft.ProjectOxford.Face
version 1.1.0:Le portail Azure Functions offre un moyen pratique de gérer vos fichiers de fonctions, que nous pouvons utiliser pour créer (ou télécharger) notre
project.json
:project.json
fichier précédemment créé sur votre machineproject.json
et définissez vos références de package (vous pouvez utiliser l'exemple ci-dessus comme modèle).Le processus de restauration du package commencera et vous devriez voir une sortie similaire à la suivante dans votre fenêtre de journal:
Comme prévu, le runtime Azure Functions ajoutera automatiquement les références aux assemblys de package, vous n'avez donc PAS besoin d'ajouter explicitement des références d'assembly à l'aide
#r "AssemblyName"
, vous pouvez simplement ajouter lesusing
instructions requises à votre fonction et utiliser les types définis dans le package NuGet que vous j'ai référencé.Options de déploiement supplémentaires
Étant donné qu'Azure Functions repose sur App Services, au lieu des étapes ci-dessus, vous avez également accès à toutes les excellentes options de déploiement disponibles pour les applications Web Azure standard (sites Web Azure).
Voici quelques exemples:
Utilisation de l'éditeur App Service (Monaco)
Pour gérer vos fichiers directement depuis votre navigateur en utilisant l'éditeur App Service (Monaco):
Function app settings
Go to App Service Settings
Tools
boutonOn
s'il n'est pas déjà activé et cliquez surGo
project.json
fichier dans le dossier de votre fonction (le dossier nommé d'après votre fonction.Utilisation du point de terminaison SCM (Kudu)
https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
fichier dans le dossier (sur la grille de fichiers)FTP
Une fois connecté (en suivant les instructions ci-dessus), copiez votre
Project.json
fichier dans/site/wwwroot/<function_name>
Pour des options de déploiement supplémentaires, voir: https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/
Intégration continue
Si vous activez l'intégration continue et déployez votre fonction avec un
project.json
fichier lorsque votre application de fonction n'est pas en cours d'exécution, la restauration du package se produira automatiquement une fois votre application de fonction initialisée. Il est recommandé de ne pas ajouter votreproject.lock.json
fichier au contrôle de code source.Assemblys pré-compilés
Les fonctions peuvent également être déployées en tant qu'assemblys précompilés, et dans ce cas, toute la gestion des dépendances est gérée dans Visual Studio. Cette option peut être utilisée comme bibliothèques de classes standard sur n'importe quelle version de Visual Studio ou à l'aide des outils Azure Functions de Visual Studio 2017 .
la source
function script root
dans votre dernier paragraphe? Je comprends que c'est là queproject.json
se trouve. Est-ce exact?project.json
trouve dans votre dossier de fonctions, qui est un dossier enfant de la racine du script. La racine du script correspond à votrewwwroot
dossier dans Azure.Ce fil de discussion m'a beaucoup aidé - mais j'ai quand même perdu quelques heures à essayer de faire fonctionner Project.json - en vain.
Si vous créez une fonction Azure dans la version 2.x, vous devez le faire d'une manière différente.
Créez un nouveau fichier comme indiqué, mais nommez-le function.proj . Ce fichier a une structure XML pour importer des bibliothèques via Nuget.
Voici mon exemple d'importation du SDK Amazon S3 pour .Net;
lors de l'enregistrement, vous devriez voir la mise à jour de la console indiquant que les packages sont en cours d'installation. Ce n'est vraiment pas bien documenté et il m'a fallu quelques bonnes heures pour le découvrir. J'espère donc que cela aide quelqu'un.
la source
Vous pouvez utiliser des packages Nuget dans vos fonctions Azure. Le moyen le plus simple sera d'utiliser Visual Studio 2017 15.4 où il existe un modèle pour Azure Functions. Suivez les étapes ci-dessous
1) Ajouter un projet de fonction Azure: cliquez avec le bouton droit sur la solution et sélectionnez Ajouter un nouveau projet. Allez dans l'option CLOUD, vous y trouverez le projet "Azure Function".
2) Maintenant, c'est joli d'ajouter n'importe quel paquet Nuget. Développez "DÉPENDANCES" et faites un clic droit dessus pour sélectionner l'option "Gérer les packages Nuget". La boîte de dialogue Nuget Package apparaîtra, sélectionnez n'importe quel package Nuget que vous souhaitez installer. Voir la capture d'écran ci-dessous
3) Maintenant, publiez votre fonction Azure, Visual Studio s'occupera de tous les paramètres, etc.
Cette méthode ne fonctionnera que si vous utilisez Visual Studio 2017 15.4 ou supérieur, sinon vous devrez suivre d'autres méthodes, comme expliqué par d'autres.
la source
Supposons que nous voulions utiliser le
SFTP
client, qui est une bibliothèque externe, stockée quelque part dansNuGet
.Pour ce faire, conformément à la dernière spécification Azure Functions , procédez comme suit:
Ouvrez la section des fichiers dans votre fonction Azure et ajoutez un nouveau fichier appelé
function.proj
.Pour plus d'informations, reportez-vous à la documentation Microsoft .
À l'intérieur,
function.proj
placez laNuget
référence du package en utilisant laXML
structure (le même type de structure que vous pouvez trouver à l'intérieur du*.csproj
fichier si vous créez un projet local avec Visual Studio et y installez unNuGet
package).Ensuite, incluons la référence de bibliothèque au projet:
Ce qui est essentiel ici, c'est que vous devez fournir un chemin complet vers la bibliothèque, comme dans l'exemple que vous pouvez voir:
"D:\home\site\wwwroot\bin\your_custom_library.dll"
Enfin, ouvrez la section Journaux et enregistrez le code. Après un certain temps, vous devriez voir le
NuGet
journal de restauration des packages.Remarque: ces journaux peuvent également apparaître lors de l'enregistrement du
function.proj
fichier ou lors de l'exécution du projet.Si la bibliothèque apparaît toujours comme inconnue, essayez de l'ajouter
Dll
manuellement dans le dossier bin à l'aide de l' explorateur Azure Cloud à partir de Visual Studio .la source
function.proj
, l'emplacement dudll
apparaît dans la section Journaux après un certain temps. Parfois, vous devez recharger la page pour la fonction Azure une fois de plus, parfois appuyez sur le bouton «Exécuter» pour voir l'installation des packages NuGet et également l'emplacement. Veuillez vérifier ce qui s'imprime dans la section Journal comme emplacement et essayez de le mettre.Notez que le nouveau format .csproj dans Visual studio 2017 est également pris en charge. Si vous créez votre projet en tant que projet Web ASPNET, le runtime Azure Functions télécharge tous les packages nuget nécessaires avant de générer votre projet.
la source