Blog

Erstellen, Testen und Bereitstellen von vorkompilierten Azure-Funktionen

Geert van der Cruijsen

Aktualisiert Oktober 21, 2025
5 Minuten

Azure-Funktionen eignen sich hervorragend, um schnell kleine spezialisierte Dienste zu erstellen. Wenn Sie ein Azure Functions-Projekt mit der integrierten Vorlage aus dem SDK in Visual Studio erstellen, erhalten Sie automatisch eine Funktion, die in einer CSX-Datei erstellt wurde. Diese sieht aus wie einfaches altes C#, ist aber in Wirklichkeit ein C# Script. Wenn Sie diese Dateien in Azure bereitstellen, müssen Sie sie nicht lokal oder auf einem Build-Server kompilieren, sondern können sie einfach direkt in Ihren Azure Storage hochladen.

Mit dem letzten Update für Azure Functions wurde die Option hinzugefügt, vorkompilierte Funktionen zu erstellen. Das ist eigentlich ganz einfach. Ich habe ein Beispielprojekt auf Github erstellt, das eine vorkompilierte Azure-Funktion, Unit-Tests für die Funktion und eine ARM-Vorlage zur Bereitstellung der Funktion enthält. Lassen Sie uns die Schritte zur Erstellung einer vorkompilierten Azure-Funktion durchgehen.

Bauen Sie

In diesem Beispiel erstellen wir einfach eine supereinfache Azure-Funktion. Wir leihen uns den Code aus der CSX Function-Vorlage und verwandeln ihn in eine vorkompilierte Azure-Funktion. Anstatt ein Projekt aus der Azure Function-Vorlage zu erstellen, können wir einfach eine neue Klassenbibliothek verwenden und diese "PreCompiledFunctionDemo" nennen.

Im Projekt Klassenbibliothek löschen wir die generierte Class1.cs und erstellen eine neue Klasse, die unsere Funktion enthält. Nennen wir die Klasse: "NameFunction" In dieser Klasse können wir einfach den Code aus unserer CSX-Beispielfunktion kopieren und in diese Instanz einfügen. Wenn Sie Ihre eigene Funktion erstellen, müssen Sie eine öffentliche Klasse erstellen, die eine statische Methode namens Run enthält.

Damit die Klassenbibliothek erstellt werden kann, müssen wir ein paar Nuget-Pakete hinzufügen: Newtonsoft.Json, Microsoft.AspNet.WebApi.Core und Microsoft.AspNet.WebApi.Client. Jetzt wird die Funktion kompiliert und wir können den letzten Schritt hinzufügen, um eine funktionierende Funktion zu erhalten: Hinzufügen der Datei Function.json. Die Datei function.json funktioniert genauso wie bei CSX Functions, außer dass Sie oben ein paar Zeilen hinzufügen müssen, die auf Ihre Assembly verweisen, die die Funktion enthält. Fügen Sie diese 2 Zeilen mit der ScriptFile und dem EntryPoint hinzu und schon ist unsere Funktion fertig!

Test

Einer der Vorteile von vorkompilierten Funktionen ist, dass Sie Tools für Unit-Tests Ihrer Funktion verwenden können, wie Sie es auch bei der Erstellung von anderem .Net-Code tun würden. In diesem Beispiel habe ich XUnit verwendet, da dies heutzutage das beliebteste Test-Framework zu sein scheint. Da es sich bei meiner Funktion nur um eine einfache Klassenbibliothek handelt, ist es einfach, einige Tests hinzuzufügen.

In unserem Unit-Test können wir einfach die statische Methode Run unserer Klasse NameFunction aufrufen und eine HttpRequestMessage übergeben. Die URL spielt keine Rolle, da sie nicht wirklich gehostet wird. Sie können jedoch URL-Parameter zu Ihrer Funktion hinzufügen, indem Sie den Querystring verwenden, wie ich es im ersten Test tue.

Der HttpRequestMessage muss auch eine HttpConfiguration übergeben werden, sonst kann Ihre Funktion keine Antwort auf die HttpRequestMessage erstellen. Nachdem diese Vorkehrungen getroffen wurden, können wir die Methode Run aufrufen und unser Ergebnis bestätigen.

Bereitstellen

Jetzt kann unsere Klassenbibliothek erstellt und getestet werden, aber wie bekommen wir diese DLL nach Azure? Am einfachsten geht das, indem Sie im Azure-Portal in den Entwicklungsbereich Ihrer Azure-Funktion gehen und die Datei DLL + function.json in die Dateiliste auf der rechten Seite ziehen.

Bildschirmfoto 2017-01-30 um 17.23.24

Das ist vielleicht der einfachste Weg, es einmal zu tun. Ich vermute, dass Sie, wenn Sie eine vorkompilierte Funktion erstellen möchten, CI / CD für Ihre Funktion einrichten werden. In diesem Beispiel werde ich es mit VSTS einrichten. Dazu werden wir uns eine ARM-Vorlage ausleihen, die mein Xpirit-Kollege Peter Groenewegen erstellt hat und mit der wir alle Azure-Komponenten erstellen können, die wir für unsere Azure-Funktion benötigen. Diese ARM-Vorlage wird in unserem Release in VSTS verwendet, um eine neue Funktions-App zu erstellen, auf der wir dann unsere DLL und die function.json-Datei bereitstellen.

CI Aufbau

Ich habe meine Visual Studio Team Services mit meinem Github-Repository verbunden und einen CI-Build eingerichtet, der bei jeder Pull-Anfrage erstellt wird. Ich habe die Standard-Build-Vorlage von Visual Studio ausgewählt und alle Build-Schritte ausgefüllt.

  1. Wählen Sie Ihre Lösungsdatei, um Nuget-Pakete wiederherzustellen
  2. Wählen Sie Ihre Lösungsdatei aus, um die Lösung zu erstellen
  3. Wählen Sie Ihre Testprojekt-Assemblies aus, damit der Build die zuvor erstellten Unit-Tests ausführen kann.
  4. Symbole veröffentlichen
  5. Kopieren Sie die PreCompiledFunctionDemo.dll und die function.json-Datei aus der Build-Ausgabe in einen Artefakte-Ordner
  6. Kopieren Sie die json-Dateien aus der ARM-Vorlage in den Ordner "Artefakte
  7. Veröffentlichen Sie den Ablageordner mit den zuvor kopierten Artefakten
Bildschirmfoto 2017-01-30 um 22.17.15

 

Wenn wir diesen Build ausführen, sollten wir ein grünes Ergebnis erhalten, bei dem unsere Unit-Tests ausgeführt werden und ein Paket erstellt wird, das wir dann auf Azure bereitstellen können.

Bildschirmfoto 2017-01-30 um 22.57.33

Freigabe

Auf der Registerkarte Release von Visual Studio Team Services erstellen wir eine neue Release-Definition und fügen 2 Schritte hinzu.

  1. Schritt Azure Deploy: Wählen Sie die ARM-Vorlage azuredeploy.json und die Parameterdatei, um eine neue Azure-Ressourcengruppe zu erstellen.
  2. Web Deploy Schritt, in dem wir den Drop-Ordner auswählen, der die dll-Datei und die function.json-Datei enthält.

(Stellen Sie sicher, dass sich die dll-Datei und die function.json in einem Unterverzeichnis befinden, da die Funktion den Namen dieses Verzeichnisses erhält)

Bildschirmfoto 2017-01-30 um 22.35.48

Führen Sie die Freigabe aus. Jetzt wird die Azure-Ressourcengruppe erstellt und die Funktion wird in der Ressourcengruppe bereitgestellt. Öffnen Sie Ihren Browser und rufen Sie die Funktion auf.

Bildschirmfoto 2017-01-30 um 22.48.44

Erfolg! Unsere Azure-Funktion funktioniert perfekt!

Fazit

Ich hoffe, dieser Blogpost hilft Ihnen bei der Erstellung von Azure-Funktionen mit vorkompilierten Assemblies, von denen viele noch nicht wissen, dass sie möglich sind.

Welche Art der serverlosen Entwicklung auf Azure bevorzugen Sie? CSX oder vorkompiliert und warum?

Viel Spaß beim Codieren!

Geert van der Cruijsen

The post Erstellen, Testen und Bereitstellen von vorkompilierten Azure-Funktionen appeared first on Mobile First Cloud First.

Verfasst von

Geert van der Cruijsen

Contact

Let’s discuss how we can support your journey.