Kann ich mithilfe von Azure-Funktionen NuGet-Pakete in meiner C # -Funktion referenzieren und verwenden?
c#
azure
azure-functions
nuget-package
azure-web-app-service
Fabio Cavalcante
quelle
quelle
Antworten:
Ja! Obwohl das Azure-Funktionsportal derzeit keinen Mechanismus zum Hinzufügen und Verwalten von NuGet-Paketen bietet, unterstützt die Laufzeit NuGet-Referenzen und stellt sicher, dass diese beim Kompilieren und Ausführen Ihrer Funktionen korrekt 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 aufMicrosoft.ProjectOxford.Face
Version 1.1.0 hinzufügt :Das Azure-Funktionsportal bietet eine bequeme Möglichkeit zum Verwalten Ihrer Funktionsdateien, mit der wir Folgendes erstellen (oder hochladen) können
project.json
:project.json
Datei auf Ihrem Computer habenproject.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:
Wie erwartet fügt die Azure Functions-Laufzeit die Verweise automatisch zu den Paketassemblys hinzu. Sie müssen also KEINE Assemblyreferenzen explizit hinzufügen, indem
#r "AssemblyName"
Sie einfach die erforderlichenusing
Anweisungen zu Ihrer Funktion hinzufügen und die im NuGet-Paket definierten Typen verwenden. habe verwiesen.Zusätzliche Bereitstellungsoptionen
Da Azure-Funktionen als Alternative zu den oben genannten Schritten auf App Services basieren, haben Sie auch Zugriff auf alle wichtigen Bereitstellungsoptionen, die für Standard-Azure-Webanwendungen (Azure-Websites) verfügbar sind.
Hier sind einige Beispiele:
Verwenden des App Service Editors (Monaco)
So verwalten Sie Ihre Dateien direkt über Ihren Browser mithilfe des App Service Editor (Monaco):
Function app settings
Go to App Service Settings
Tools
SchaltflächeOn
wenn es noch nicht aktiviert ist, und klicken Sie aufGo
project.json
Datei nach dem Laden per Drag & Drop in den Ordner Ihrer Funktion (den nach Ihrer Funktion benannten Ordner).Verwenden des SCM-Endpunkts (Kudu)
https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
Datei per Drag & Drop in den Ordner (in das Dateiraster).FTP
Sobald die Verbindung hergestellt ist (folgen Sie den Anweisungen oben), kopieren Sie Ihre
Project.json
Datei nach/site/wwwroot/<function_name>
Weitere Bereitstellungsoptionen finden Sie unter: https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/
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, erfolgt die Paketwiederherstellung automatisch, sobald Ihre Funktions-App initialisiert wird. Es wird empfohlen , dass Sie nicht fügen Sie Ihreproject.lock.json
Datei auf Quellcodeverwaltung.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 jeder Version von Visual Studio oder mithilfe der Azure-Funktionstools von Visual Studio 2017 verwendet werden .
quelle
function script root
in Ihrem letzten Absatz? Ich verstehe, dass es dort ist, woproject.json
es sich befindet. Ist das korrekt?project.json
befindet sich in Ihrem Funktionsordner, einem untergeordneten Ordner des Skriptstamms. Das Skriptstammverzeichnis wird Ihremwwwroot
Ordner in Azure zugeordnet.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 eine Azure-Funktion in Version 2.x erstellen, müssen Sie dies auf andere Weise tun.
Erstellen Sie eine neue Datei wie angegeben, nennen Sie sie jedoch function.proj . Diese Datei verfügt über eine XML-Struktur zum Importieren von Bibliotheken über Nuget.
Hier ist mein Beispiel für den Import des Amazon S3 SDK für .Net.
Nach dem Speichern sollte das Konsolenupdate angezeigt werden, das besagt, dass die Pakete installiert werden. Das ist wirklich nicht gut dokumentiert und ich habe ein paar Stunden gebraucht, um das herauszufinden. Ich hoffe, das hilft jemandem.
quelle
Sie können Nuget-Pakete in Ihren Azure-Funktionen verwenden. Am einfachsten ist es, Visual Studio 2017 15.4 zu verwenden, in dem eine Vorlage für Azure-Funktionen vorhanden ist. Befolgen Sie die folgenden Schritte
1) Azure-Funktion hinzufügen Projekt: Klicken Sie mit der rechten Maustaste auf Lösung und wählen Sie Neues Projekt hinzufügen. Gehen Sie zur Option CLOUD, dort finden Sie das Projekt "Azure-Funktion".
2) Jetzt ist es schön, ein Nuget-Paket hinzuzufügen. Erweitern Sie "ABHÄNGIGKEITEN" und klicken Sie mit der rechten Maustaste darauf, um die Option "Nuget-Pakete verwalten" auszuwählen. Das Dialogfeld "Nuget-Paket" wird angezeigt. Wählen Sie ein beliebiges Nuget-Paket aus, das Sie installieren möchten. Siehe Screenshot unten
3) Veröffentlichen Sie nun Ihre Azure-Funktion. Visual Studio übernimmt alle Einstellungen usw.
Diese Methode funktioniert nur, wenn Sie Visual Studio 2017 15.4 oder höher verwenden. Andernfalls müssen Sie andere Methoden befolgen, wie von anderen erläutert.
quelle
Nehmen wir an, wir möchten den
SFTP
Client verwenden, bei dem es sich um eine externe Bibliothek handelt, die irgendwo in gespeichert istNuGet
.Gehen Sie dazu gemäß der neuesten Azure-Funktionsspezifikation wie folgt vor:
Öffnen Sie den Dateibereich in Ihrer Azure-Funktion und fügen Sie eine neue Datei mit dem Namen hinzu
function.proj
.Weitere Informationen finden Sie in der Microsoft- Dokumentation .
Darin befindet sich
function.proj
dieNuget
Paketreferenz unter Verwendung derXML
Struktur (dieselbe Art von Struktur, die Sie in der*.csproj
Datei finden, wenn Sie ein lokales Projekt mit Visual Studio erstellen und einNuGet
Paket darin installieren ).Als nächstes fügen wir den Bibliotheksverweis auf das Projekt hinzu:
Hier ist es wichtig, dass Sie einen vollständigen Pfad zur Bibliothek angeben, wie in dem Beispiel, das Sie sehen können:
"D:\home\site\wwwroot\bin\your_custom_library.dll"
Öffnen Sie abschließend den Abschnitt Protokolle und speichern Sie den Code. Nach einiger Zeit sollten die
NuGet
Pakete das Protokoll wiederherstellen.Hinweis: Diese Protokolle können auch beim Speichern von
function.proj
Dateien oder beim Ausführen des Projekts angezeigt werden.Falls die Bibliothek immer noch als unbekannt angezeigt wird, versuchen Sie, sie
Dll
manuell mit dem Azure Cloud Explorer aus Visual Studio in den Ordner bin hinzuzufügen .quelle
function.proj
, wird der Speicherort für dasdll
nach einiger Zeit im Abschnitt "Protokolle" angezeigt. Manchmal müssen Sie die Seite für die Azure-Funktion erneut laden, manchmal auf die Schaltfläche "Ausführen" klicken, um die Installation der NuGet-Pakete und auch den Speicherort anzuzeigen. Bitte überprüfen Sie, was im Abschnitt Protokoll als Speicherort gedruckt wird, und versuchen Sie, dies anzugeben.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 Nuget-Pakete herunter, die vor dem Erstellen Ihres Projekts erforderlich sind.
quelle