À l'aide d' Azure Functions , puis-je référencer et utiliser des packages NuGet dans ma fonction C #?
À l'aide d' Azure Functions , puis-je référencer et utiliser des packages NuGet dans ma fonction C #?
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 à la Microsoft.ProjectOxford.Face
version 1.1.0:
{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.ProjectOxford.Face": "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:
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, vous n'avez donc PAS besoin d'ajouter explicitement des références d'assembly à l'aide #r "AssemblyName"
, vous pouvez simplement ajouter les using
instructions requises à votre fonction et utiliser les types définis dans le package NuGet que vous j'ai référencé.
É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:
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.https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
fichier dans le dossier (sur la grille de fichiers)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/
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 votre project.lock.json
fichier au contrôle de code source.
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 .
function script root
dans votre dernier paragraphe? Je comprends que c'est là que project.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 à votre wwwroot
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;
<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 quelques 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 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.
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 la Nuget
référence du package en utilisant la XML
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 un NuGet
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 .
function.proj
, l'emplacement du dll
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.