webentwicklung-frage-antwort-db.com.de

Wie kann ich NuGet-Pakete in meinen Azure-Funktionen verwenden?

Kann ich mit Azure Functions NuGet-Pakete in meiner C # -Funktion referenzieren und verwenden?

100

Ja! Obwohl das Azure Functions-Portal derzeit keinen Mechanismus zum Hinzufügen und Verwalten von NuGet-Paketen bietet, unterstützt die Laufzeitumgebung NuGet-Verweise und stellt sicher, dass diese beim Kompilieren und Ausführen Ihrer Funktionen ordnungsgemäß verwendet werden.

Um Ihre Abhängigkeiten zu definieren, müssen Sie eine Project.json - Datei mit den erforderlichen NuGet-Paketreferenzen erstellen. Hier ist ein Beispiel, das einen Verweis auf Microsoft.ProjectOxford.Face Version 1.1.0 hinzufügt:

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "Microsoft.ProjectOxford.Face": "1.1.0"
      }
    }
   }
}

Das Azure-Funktionsportal bietet eine bequeme Möglichkeit, Ihre Funktionsdateien zu verwalten, mit denen wir unseren project.json Erstellen (oder hochladen) können:

  1. Klicken Sie im Abschnitt Entwickeln der Funktion auf Dateien anzeigen
  2. Klicken Sie auf die Option, um create eine Datei zu erstellen (Sie können auch auf die Option klicken, um eine Datei hochzuladen, wenn Sie eine zuvor erstellte project.json - Datei auf Ihrem Computer haben
  3. Nennen Sie die Datei project.json Und definieren Sie Ihre Paketreferenzen (Sie können das obige Beispiel als Vorlage verwenden).

Der Paketwiederherstellungsprozess beginnt und Sie sollten eine Ausgabe ähnlich der folgenden in Ihrem Protokollfenster sehen:

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.

Wie erwartet fügt die Laufzeitumgebung von Azure Functions die Verweise automatisch zu den Paketassemblys hinzu. Sie müssen also KEINE Assemblyverweise mit #r "AssemblyName" Explizit hinzufügen. Sie können lediglich die erforderlichen using -Anweisungen zu Ihren Anweisungen hinzufügen Funktionieren Sie und verwenden Sie die Typen, die in dem NuGet-Paket definiert sind, auf das Sie verwiesen haben.

Zusätzliche Bereitstellungsoptionen

Da Azure Functions auf App Services aufbaut, haben Sie als Alternative zu den obigen Schritten auch Zugriff auf alle hervorragenden Bereitstellungsoptionen, die für standardmäßige Azure Web Apps (Azure-Websites) verfügbar sind.

Hier sind einige Beispiele:

Verwenden des App Service Editors (Monaco)

So verwalten Sie Ihre Dateien mit dem App Service Editor (Monaco) direkt von Ihrem Browser aus:

  • Klicken Sie im Azure Functions-Portal auf Function app settings.
  • Klicken Sie im Abschnitt Erweiterte Einstellungen auf Go to App Service Settings.
  • Klicken Sie auf die Schaltfläche Tools
  • Klicken Sie unter Entwickeln auf App Service Editor .
  • Schalte es On um, falls es noch nicht aktiviert ist und klicke auf Go
  • Nach dem Laden ziehen Sie Ihre project.json - Datei per Drag & Drop in den Ordner Ihrer Funktion (den Ordner, der nach Ihrer Funktion benannt ist).

Verwenden des SCM-Endpunkts (Kudu)

  • Navigiere zu: https://<function_app_name>.scm.azurewebsites.net
  • Klicken Sie auf Debug Console> CMD
  • Navigiere zu D:\home\site\wwwroot\<function_name>
  • Ziehen Sie Ihre Project.json - Datei in den Ordner (auf das Dateiraster) und legen Sie sie dort ab.

FTP

Kontinuierliche Integration

Wenn Sie die kontinuierliche Integration aktivieren und Ihre Funktion mit einer project.json - Datei bereitstellen, während Ihre Funktions-App nicht ausgeführt wird, wird die Paketwiederherstellung automatisch ausgeführt, sobald Ihre Funktions-App initialisiert wird. Es wird empfohlen, dass Sie Ihre project.lock.json - Datei nicht zur Quellcodeverwaltung hinzufügen .

Vorkompilierte Baugruppen

Funktionen können auch als vorkompilierte Assemblys bereitgestellt werden. In diesem Fall wird die gesamte Abhängigkeitsverwaltung in Visual Studio ausgeführt. Diese Option kann als Standardklassenbibliothek in einer beliebigen Version von Visual Studio oder mithilfe von Visual Studio 2017 Azure Functions Tools verwendet werden.

135

Dieser Thread hat mir sehr geholfen - aber ich habe immer noch ein paar Stunden damit verbracht, Project.json zum Laufen zu bringen - ohne Erfolg.

Wenn Sie in Version 2.x eine Azure-Funktion erstellen, müssen Sie dies auf andere Weise tun.

Erstellen Sie eine neue Datei wie angegeben, nennen Sie sie aber function.proj. Diese Datei hat eine XML-Struktur zum Importieren von Bibliotheken über Nuget.

Hier ist mein Beispiel für den Import des Amazon S3 SDK für .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>

nach dem Speichern sollte das Konsolen-Update anzeigen, dass die Pakete installiert werden. Das ist wirklich nicht gut dokumentiert und ich habe ein paar Stunden gebraucht, um das herauszufinden. Also ich hoffe das hilft jemandem.

24
James Cooke

Sie können Nuget-Pakete in Ihren Azure-Funktionen verwenden. Am einfachsten ist es, Visual Studio 2017 15.4 zu verwenden, wenn eine Vorlage für Azure-Funktionen vorhanden ist. Befolgen Sie die folgenden Schritte

1) Azure-Funktion Projekt hinzufügen: Klicken Sie mit der rechten Maustaste auf die Lösung und wählen Sie Neues Projekt hinzufügen. Gehen Sie zur Option CLOUD, dort finden Sie das Projekt "Azure Function".

Azure Function

2) Nun ist es schön, ein beliebiges Nuget-Paket hinzuzufügen. Erweitern Sie "DEPENDENCIES" und klicken Sie mit der rechten Maustaste darauf, um die Option "Manage Nuget Packages" auszuwählen. Das Dialogfeld "Nuget-Paket" wird angezeigt. Wählen Sie ein Nuget-Paket aus, das Sie installieren möchten. Siehe Screenshot unten

3) Veröffentlichen Sie jetzt Ihre Azure-Funktion. Visual Studio kümmert sich um alle Einstellungen usw.

Diese Methode funktioniert nur, wenn Sie Visual Studio 2017 15.4 oder höher verwenden. Andernfalls müssen Sie anderen Anweisungen folgen.

11
Sujit Singh

Nehmen wir an, wir möchten den SFTP-Client verwenden, eine externe Bibliothek, die irgendwo in NuGet gespeichert ist.

Führen Sie dazu gemäß der neuesten Azure Functions-Spezifikation die folgenden Schritte aus:

  1. Öffnen Sie den Dateibereich in Ihrer Azure-Funktion und fügen Sie eine neue Datei mit dem Namen function.proj Hinzu.

    enter image description here Weitere Informationen finden Sie unter Microsoft Dokumentation .


  1. In diesem function.proj Feld wird die Nuget-Paketreferenz unter Verwendung der XML-Struktur eingefügt (dieselbe Art von Struktur finden Sie in der Datei *.csproj, Wenn Sie ein lokales Projekt mit Visual Studio erstellen und ein NuGet-Paket darin installieren ).

    enter image description here


  1. Als Nächstes fügen wir den Bibliotheksverweis auf das Projekt ein: enter image description here

    Hier ist es wichtig, dass Sie einen vollständigen Pfad zur Bibliothek angeben, wie im Beispiel gezeigt: "D:\home\site\wwwroot\bin\your_custom_library.dll"


  1. Testen Sie als Nächstes einen bibliotheksspezifischen Code: enter image description here

  1. Öffnen Sie abschließend den Abschnitt Protokolle und speichern Sie den Code. Nach einiger Zeit sollte das Wiederherstellungsprotokoll der NuGet-Pakete angezeigt werden. enter image description here

    Hinweis: Diese Protokolle können auch beim Speichern der function.proj - Datei oder beim Ausführen des Projekts angezeigt werden.


Wenn die Bibliothek immer noch als unbekannt angezeigt wird, fügen Sie sie manuell mit Azure Cloud Explorer aus Visual Studio in den Bin-Ordner ein.

enter image description here

1

Beachten Sie, dass das neue .csproj-Format in Visual Studio 2017 ebenfalls unterstützt wird. Wenn Sie Ihr Projekt als ASPNET-Webprojekt erstellen, lädt die Azure Functions-Laufzeit alle erforderlichen Nuget-Pakete herunter, bevor Sie Ihr Projekt erstellen.

1
solvingJ