web-dev-qa-db-fra.com

Comment utiliser les packages NuGet dans mes fonctions Azure?

À l'aide de Fonctions Azure , puis-je référencer et utiliser les packages NuGet dans ma fonction C #?

100
Fabio Cavalcante

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:

  1. Dans la section de la fonction develop , cliquez sur pour afficher les fichiers .
  2. Cliquez sur l'option pour créer un fichier (vous pouvez également cliquer sur l'option pour télécharger un fichier si vous avez déjà créé un fichier project.json sur votre machine.]
  3. Nommez le fichier 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é.

Options de déploiement supplémentaires

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:

Utilisation de App Service Editor (Monaco)

Pour gérer vos fichiers directement à partir de votre navigateur en utilisant App Service Editor (Monaco):

  • Sur le portail Azure Functions, cliquez sur Function app settings.
  • Sous la section Paramètres avancés , cliquez sur Go to App Service Settings.
  • Cliquez sur le bouton Tools
  • Sous Développer , cliquez sur Éditeur de service d'application .
  • Tournez-le On s'il n'est pas déjà activé et cliquez sur Go
  • Une fois qu'il est chargé, faites glisser votre fichier project.json dans le dossier de votre fonction (le dossier portant le nom de votre fonction).

Utilisation du noeud final SCM (Kudu)

  • Accédez à: https://<function_app_name>.scm.azurewebsites.net
  • Cliquez sur Console de débogage> CMD
  • Naviguez jusqu'à D:\home\site\wwwroot\<function_name>
  • Glissez-déposez votre fichier Project.json dans le dossier (sur la grille).

FTP

Intégration continue

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.

Assemblages pré-compilés

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 .

135
Fabio Cavalcante

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.

24
James Cooke

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".

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.

11
Sujit Singh

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:

  1. Ouvrez la section des fichiers dans votre fonction Azure et ajoutez un nouveau fichier appelé function.proj.

    enter image description here Pour plus d'informations, reportez-vous à Microsoft documentation .


  1. À 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).

    enter image description here


  1. Ensuite, incluons la référence de la bibliothèque au projet: enter image description here

    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"


  1. Ensuite, testez un code spécifique à la bibliothèque: enter image description here

  1. 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. enter image description here

    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.

enter image description here

1
Arsen Khachaturyan

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.

1
solvingJ