À l'aide de Fonctions Azure , puis-je référencer et utiliser les packages NuGet dans ma fonction C #?
Oui! Bien que le portail Fonctions Azure ne fournisse pas actuellement de mécanisme pour ajouter et gérer les packages NuGet, le moteur d'exécution 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.
Afin de définir vos dépendances, vous devez créer un fichier Project.json
avec les références de package NuGet requises. Voici un exemple qui ajoute une référence à Microsoft.ProjectOxford.Face
version 1.1.0:
{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.ProjectOxford.Face": "1.1.0"
}
}
}
}
Le portail Azure Functions fournit un moyen pratique de gérer vos fichiers de fonction, que nous pouvons utiliser pour créer (ou télécharger) notre project.json
:
project.json
sur votre machine.]project.json
et définissez les références de votre paquet (vous pouvez utiliser l'exemple ci-dessus comme modèle).Le processus de restauration du paquet va commencer et vous devriez voir une sortie semblable à celle-ci dans votre fenêtre de journal:
2016-04-04T19:02:48.745 Restoring packages.
2016-04-04T19:02:48.745 Starting NuGet restore
2016-04-04T19:02:50.183 MSBuild auto-detection: using msbuild version '14.0' from 'D:\Program Files (x86)\MSBuild\14.0\bin'.
2016-04-04T19:02:50.261 Feeds used:
2016-04-04T19:02:50.261 C:\DWASFiles\Sites\facavalfunctest\LocalAppData\NuGet\Cache
2016-04-04T19:02:50.261 https://api.nuget.org/v3/index.json
2016-04-04T19:02:50.261
2016-04-04T19:02:50.511 Restoring packages for D:\home\site\wwwroot\HttpTriggerCSharp1\Project.json...
2016-04-04T19:02:52.800 Installing Newtonsoft.Json 6.0.8.
2016-04-04T19:02:52.800 Installing Microsoft.ProjectOxford.Face 1.1.0.
2016-04-04T19:02:57.095 All packages are compatible with .NETFramework,Version=v4.6.
2016-04-04T19:02:57.189
2016-04-04T19:02:57.189
2016-04-04T19:02:57.455 Packages restored.
Comme prévu, le runtime Azure Functions ajoutera automatiquement les références aux assemblys de package. Par conséquent, vous n'avez PAS besoin d'ajouter explicitement les références d'assembly à l'aide de #r "AssemblyName"
, vous pouvez simplement ajouter les instructions using
requises à votre fonction. utilisez les types définis dans le package NuGet que vous avez référencé.
Azure Functions étant basé sur App Services, vous avez également accès à toutes les superbes options de déploiement disponibles pour les applications Web Azure standard (sites Web Azure).
Voici quelques exemples:
Pour gérer vos fichiers directement à partir de votre navigateur en utilisant App Service Editor (Monaco):
Function app settings
.Go to App Service Settings
.Tools
On
s'il n'est pas déjà activé et cliquez sur Go
project.json
dans le dossier de votre fonction (le dossier portant le nom de votre fonction).https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
dans le dossier (sur la grille).Une fois connecté (en suivant les instructions ci-dessus), copiez votre fichier Project.json
dans /site/wwwroot/<function_name>
.
Pour plus d'options de déploiement, voir: https://Azure.Microsoft.com/en-us/documentation/articles/web-sites-deploy/
Si vous activez l'intégration continue et déployez votre fonction avec un fichier project.json
lorsque votre application Function n'est pas en cours d'exécution, la restauration du package aura lieu automatiquement une fois votre application initialisée. Il est recommandé de ne pas ajouter votre fichier project.lock.json
au contrôle de source.
Les fonctions peuvent également être déployées sous forme d'assemblages 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èque de classe standard sur n'importe quelle version de Visual Studio ou à l'aide de Outils de Visual Studio 2017 Azure Functions .
Ce fil m'a beaucoup aidé - mais j'ai tout de même passé quelques heures à essayer de faire fonctionner Project.json - en vain.
Si vous créez une fonction Azure dans la version 2.x, vous devez procéder différemment.
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;
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AWSSDK.S3" Version="3.3.26.3"/>
<PackageReference Include="AWSSDK.Core" Version="3.3.29.1"/>
</ItemGroup>
</Project>
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 de bonnes heures pour le découvrir. J'espère donc que cela aide quelqu'un.
Vous pouvez utiliser des packages Nuget dans vos fonctions Azure. Le moyen le plus simple consiste à utiliser Visual Studio 2017 15.4 avec un modèle pour les fonctions Azure. Suivez les étapes ci-dessous
1) Ajouter une fonction Azure Projet: Faites un clic droit sur la solution et sélectionnez Ajouter un nouveau projet. Allez dans l'option CLOUD, vous trouverez le projet "Azure Function".
2) Maintenant, c'est bien d'ajouter n'importe quel paquet Nuget. Développez "DEPENDANCES" et cliquez dessus avec le bouton droit de la souris pour sélectionner l'option "Gérer les paquets de nugets". La boîte de dialogue Nuget Package apparaîtra, sélectionnez le package Nuget que vous souhaitez installer. Voir la capture d'écran ci-dessous
3) Maintenant, publiez votre fonction Azure, Visual Studio se chargera de tous les paramètres, etc.
Cette méthode fonctionnera uniquement si vous utilisez Visual Studio 2017 version 15.4 ou ultérieure, sinon vous devrez suivre d'autres méthodes, comme expliqué par d'autres.
Supposons que nous voulions utiliser le client SFTP, une bibliothèque externe, stockée quelque part dans NuGet.
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 à Microsoft documentation .
À l'intérieur de ce function.proj
, placez la référence du package Nuget à l'aide de la structure XML (le même type de structure que vous pouvez trouver dans le fichier *.csproj
si vous créez un projet local avec Visual Studio et y installez un package NuGet).
Ensuite, incluons la référence de la bibliothèque au projet:
Ce qui est essentiel ici est de fournir un chemin complet à la bibliothèque, comme dans l'exemple que vous pouvez voir, il s'agit de: "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 journal de restauration du paquetage des paquets NuGet.
Remarque: ces journaux peuvent également apparaître lors de l'enregistrement du fichier function.proj
ou lors de l'exécution du projet.
Dans le cas où la bibliothèque apparaît toujours comme inconnue, essayez d'ajouter manuellement les fichiers Dll dans le dossier bin à l'aide de Azure Cloud Explorer à partir de Visual Studio.
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 de nuget nécessaires avant de générer votre projet.