Kann ich mithilfe von Azure-Funktionen NuGet-Pakete in meiner C # -Funktion referenzieren und verwenden?
Kann ich mithilfe von Azure-Funktionen NuGet-Pakete in meiner C # -Funktion referenzieren und verwenden?
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 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 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:
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 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 erforderlichen using
Anweisungen zu Ihrer Funktion hinzufügen und die im NuGet-Paket definierten Typen verwenden. habe verwiesen.
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:
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).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).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/
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 Ihre project.lock.json
Datei auf Quellcodeverwaltung.
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 .
function script root
in Ihrem letzten Absatz? Ich verstehe, dass es dort ist, wo project.json
es sich befindet. Ist das korrekt?
project.json
befindet sich in Ihrem Funktionsordner, einem untergeordneten Ordner des Skriptstamms. Das Skriptstammverzeichnis wird Ihrem wwwroot
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.
<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 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.
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.
Nehmen wir an, wir möchten den SFTP
Client verwenden, bei dem es sich um eine externe Bibliothek handelt, die irgendwo in gespeichert ist NuGet
.
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
die Nuget
Paketreferenz unter Verwendung der XML
Struktur (dieselbe Art von Struktur, die Sie in der *.csproj
Datei finden, wenn Sie ein lokales Projekt mit Visual Studio erstellen und ein NuGet
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 .
function.proj
, wird der Speicherort für das dll
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.