.NET-HILFE

Ninject .NET Core (Wie es für Entwickler funktioniert)

Veröffentlicht 13. August 2024
Teilen Sie:

Einführung

Die Kombination der flexiblen PDF-Erstellungsfunktionen vonIronPDF mit den leistungsstarken Funktionen zur Injektion von Abhängigkeiten von*Injektion ermöglicht die Integration der beiden Bibliotheken in eine .NET Core-Anwendung. Ninject ist ein leichtgewichtiges Framework für die Injektion von Abhängigkeiten in .NET-Anwendungen, das die Testbarkeit und Flexibilität verbessert, indem es eine lose Kopplung von Komponenten ermöglicht. IronPDF** erleichtert jedoch das Erstellen, Ändern und Rendern von PDF-Dokumenten in .NET Core-Projekten, indem es Funktionen wie die Zusammenführung von Dokumenten bietet,Umwandlung von HTML in PDFund PDF-Bearbeitung.

Mit Hilfe von IronPDFs leistungsstarkerAPImit Ninject können Entwickler dynamische PDF-Dokumente aus HTML-Inhalten oder anderen Datenquellen erstellen und gleichzeitig Abhängigkeiten mit Ninjects Umkehrung der Kontrolle effektiv verwalten(IoC) container. Ninject und IronPDF ermöglichen die Entwicklung skalierbarer und wartbarer .NET Core-Anwendungen, die qualitativ hochwertige PDF-Ausgaben produzieren, die an eine Reihe von Geschäftsanforderungen angepasst sind, einschließlich der Entwicklung interaktiver Formulare, Zertifizierungen und Berichte. Um Entwicklern die Möglichkeit zu geben, vielseitige und funktionsreiche PDF-Produktionsfunktionen innerhalb ihrer .NET Core-Anwendungen zu erstellen, untersucht dieser Artikel, wie Ninject mit IronPDF** kombiniert und verwendet werden kann.

Was ist Ninject .NET Core?

*Injektion ist ein ultraleichter Dependency Injector, der die Verwaltung von Abhängigkeiten innerhalb Ihrer .NET Core-Anwendungen erheblich vereinfacht. Durch die Abstraktion der Erstellung und Injektion von Abhängigkeiten ermöglicht Ninject die Beseitigung von "Boilerplate"-Code für die Injektion von Abhängigkeiten, was eine sauberere und besser wartbare Softwarearchitektur ermöglicht. Dieses leistungsfähige Werkzeug bindet Schnittstellen an ihre konkreten Implementierungen und sorgt dafür, dass Abhängigkeiten zur Laufzeit dynamisch aufgelöst werden. Ninject hilft uns dabei, die Architektur der Anwendungssoftware zu importieren.

die Flexibilität von Ninject** erstreckt sich auch auf fortgeschrittene Szenarien und unterstützt komplexe Bindungen, Scopes und Lifecycle-Management, wodurch es für eine Vielzahl von Anwendungsanforderungen geeignet ist. Ganz gleich, ob Sie mit einfachen Projekten oder komplexen Systemen auf Unternehmensebene arbeiten, Ninject rationalisiert das Abhängigkeitsmanagement und fördert bessere Entwurfspraktiken und effizientere Entwicklungsabläufe. Seine Benutzerfreundlichkeit und seine leistungsstarken Funktionen machen es zu einem unverzichtbaren Bestandteil des Werkzeugkastens eines jeden .NET-Entwicklers und verbessern die Modularität und Testbarkeit von Anwendungen. Inject ist bekannt für seine flexible Art der Verwaltung von Abhängigkeiten innerhalb von .NET Core-Anwendungen.

Ninject .NET Core(Wie es für Entwickler funktioniert): Abbildung 1 - Ninject: Open-Source-Abhängigkeitsinjektor für .NET-Anwendungen

Ninject erlaubt auch mehrere Objektlebensdauern: scoped(eine Instanz pro Anfrage oder Bereich)vorübergehend(jedes Mal eine neue Instanz)und Einzelperson(eine Instanz pro Anwendung). Dadurch kann sich Ninject an unterschiedliche Anwendungskontexte anpassen und die Ressourcennutzung entsprechend optimieren. Es funktioniert gut mit .NET Core, um eine Vielzahl von Anwendungen zu unterstützen, darunter Konsolenanwendungen, Hintergrunddienste und mit ASP.NET Core erstellte Webanwendungen.

Ninject für .NET Core ist ein Open-Source-Projekt mit einer lebendigen Community, die ständig wächst und Entwicklern ein leistungsfähiges Toolkit für die Erstellung skalierbarer und stabiler Softwarearchitekturen zur Verfügung stellt, die den Best Practices für die Umkehrung der Kontrolle und das Abhängigkeitsmanagement folgen.

Eine Reihe von Funktionen von Ninject für .NET Core ermöglichen eine effiziente Umkehrung der Kontrolle(IoC) und die Injektion von Abhängigkeiten(DI) in .NET Core-Anwendungen. Zu den wichtigsten Funktionen von Ninject für .NET Core gehören die folgenden:

Merkmale von Ninject

IoC-Container

Ninject bietet einen IoC-Container, der sowohl leichtgewichtig als auch anpassungsfähig ist und die Auflösung von Abhängigkeiten und das Lebenszyklusmanagement übernimmt. Abhängigkeiten werden durch definierte Bindungen automatisch in Klassen injiziert.

Konstruktor-Abhängigkeitsinjektion

Konstruktorinjektion ist das Hauptmerkmal von Ninject, das die Verwendung von Klassenkonstruktoren zur Injektion von Abhängigkeiten unterstützt. Diese Methode garantiert, dass Abhängigkeiten explizit erwähnt werden und erhöht die Lesbarkeit des Codes.

Konfiguration der Bindung

Mit Ninjects flüssiger API oder konfigurierbaren Modulen konstruieren Entwickler Verbindungen zwischen Schnittstellen(abstraktionen) und ihre konkreten Implementierungen. Ninject kann nun dank dieser Funktion Abhängigkeiten zur Laufzeit dynamisch auflösen.

Unterstützung für Scopes

Verschiedene Objektbereiche werden von Ninject unterstützt, einschließlich der Bereiche(eine Instanz pro Anfrage oder Bereich)vorübergehend(jedes Mal eine neue Instanz)und Einzelperson(eine Instanz pro Anwendung). Diese Anpassungsfähigkeit hilft bei der Optimierung der Ressourcen entsprechend den Anwendungsanforderungen.

Modul-System

Mit dem Modulsystem von Ninject können Entwickler Bindungen und Konfigurationen in wiederverwendbaren Modulen anordnen. Diese modulare Strategie fördert die Trennung der Bereiche, verbessert die Codeorganisation und erleichtert die Wartung.

Integration mit .NET Core

Ninject unterstützt mehrere Frameworks und Szenarien, wie z.B. Konsolenanwendungen, Hintergrunddienste, ASP.NET Core-Webanwendungen und mehr, und lässt sich problemlos mit .NET Core-Anwendungen verbinden.

Erweiterbarkeit

Ninject hat eine blühende Gemeinschaft von verfügbaren Plugins und Erweiterungen, was es extrem erweiterbar macht. Die Funktionalität von Ninject kann von Entwicklern erweitert werden, um spezielle Anforderungen zu erfüllen und die Integration mit externen Frameworks und Bibliotheken zu erleichtern.

Prüfbarkeit

Ninject verbessert die Testbarkeit von Anwendungen, indem es eine lose Kopplung und ein modulares Design fördert. Es erleichtert die Einführung von Mock-Abhängigkeiten in Testszenarien, wodurch Unit-Tests einfacher werden.

Leistung

Ninject minimiert den Overhead bei der Auflösung von Abhängigkeiten aufgrund seiner schlanken und effizienten Architektur. Es verfügt über gute Leistungsmerkmale, die für verschiedene Anwendungsbereiche und Komplexitätsstufen geeignet sind.

Unterstützung der Gemeinschaft

Ninject ist ein Open-Source-Projekt, das sich der Unterstützung einer Entwicklergemeinschaft erfreut. Sie wird regelmäßig aktualisiert und gewartet, um die Kompatibilität mit neuen .NET Core-Versionen und veränderten Best Practices in der Softwareentwicklung zu gewährleisten.

Erstellen und Konfigurieren von Ninject .NET Core

Um Ninject für .NET Core zu erstellen und zu konfigurieren, muss der Ninject IoC-Container so eingerichtet sein, dass er Abhängigkeiten innerhalb Ihrer Anwendung handhabt. Folgen Sie dieser Schritt-für-Schritt-Anleitung, um den Einstieg zu finden:

Einrichten Ihres .NET Core-Projekts

Erstellen Sie ein neues .NET Core-Projekt

Führen Sie die folgenden Befehle aus, nachdem Sie ein Terminal oder eine Eingabeaufforderung geöffnet haben:

mkdir MyNinjectProject
cd MyNinjectProject
dotnet new console -n MyNinjectProject
cd MyNinjectProject
mkdir MyNinjectProject
cd MyNinjectProject
dotnet new console -n MyNinjectProject
cd MyNinjectProject
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Ninject .NET Core(Wie es für Entwickler funktioniert): Abbildung 2 - Führen Sie die angegebenen Befehle in Ihrem Terminal / Ihrer Eingabeaufforderung aus, um ein Ninject .NET Core Projekt zu erstellen

Ninject installieren

Mit dem folgenden Befehl können wir das Ninject NuGet-Paket herunterladen:

dotnet add package Ninject
dotnet add package Ninject
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Ninject .NET Core(Wie es für Entwickler funktioniert): Abbildung 3 - Installieren Sie das Ninject-Paket mit dem Befehl: .NET add Ninject

Ein Ninject-Modul erstellen

Eine Schnittstelle erstellen(IService.cs) und eine entsprechende Umsetzung(Service.cs) die von Ninject verwaltet werden:

// IService.cs
public interface IService
{
    void Run();
}
// IService.cs
public interface IService
{
    void Run();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#
// Service.cs
public class Service : IService
{
    public void Run()
    {
        Console.WriteLine("Service is running...");
    }
}
// Service.cs
public class Service : IService
{
    public void Run()
    {
        Console.WriteLine("Service is running...");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Erstellen Sie eine Klasse, die Ninject.Modules als Vorgänger hat. Um Ihre eigene Bindungsklasse zu definieren, verwenden Sie NinjectModule. Erstellen Sie zum Beispiel eine Datei namens NinjectBindings.cs.

// NinjectBindings.cs
using Ninject.Modules;
public class NinjectBindings : NinjectModule
{
    public override void Load()
    {
        // Define bindings here
        Bind<IService>().To<Service>().InSingletonScope();
    }
}
// NinjectBindings.cs
using Ninject.Modules;
public class NinjectBindings : NinjectModule
{
    public override void Load()
    {
        // Define bindings here
        Bind<IService>().To<Service>().InSingletonScope();
    }
}
' NinjectBindings.cs
Imports Ninject.Modules
Public Class NinjectBindings
	Inherits NinjectModule

	Public Overrides Sub Load()
		' Define bindings here
		Bind(Of IService)().To(Of Service)().InSingletonScope()
	End Sub
End Class
VB   C#

Ninject-Kernel konfigurieren

Richten Sie Ninject so ein, dass Ihr Modul in Ihrer Main-Funktion oder Startklasse verwendet wird:

// Program.cs
using Ninject;
class Program
{
    public void Configureervices()
    {
        var kernel = new StandardKernel(new NinjectBindings());
        // Resolve dependencies
        var service = kernel.Get<IService>();
        // Use the resolved service
        service.Run();
        // Optional: Dispose the kernel
        kernel.Dispose();
    }

    static void Main(string[] args)
    {
        Configureervices();
    }
}
// Program.cs
using Ninject;
class Program
{
    public void Configureervices()
    {
        var kernel = new StandardKernel(new NinjectBindings());
        // Resolve dependencies
        var service = kernel.Get<IService>();
        // Use the resolved service
        service.Run();
        // Optional: Dispose the kernel
        kernel.Dispose();
    }

    static void Main(string[] args)
    {
        Configureervices();
    }
}
' Program.cs
Imports Ninject
Friend Class Program
	Public Sub Configureervices()
		Dim kernel = New StandardKernel(New NinjectBindings())
		' Resolve dependencies
		Dim service = kernel.Get(Of IService)()
		' Use the resolved service
		service.Run()
		' Optional: Dispose the kernel
		kernel.Dispose()
	End Sub

	Shared Sub Main(ByVal args() As String)
		Configureervices()
	End Sub
End Class
VB   C#

Ausgabe des obigen Code-Beispiels

Ninject .NET Core(Wie es für Entwickler funktioniert): Abbildung 4 - Konsolenausgabe für den obigen Ninject-Code in der .NET-Konsolenanwendung.

Erste Schritte mit IronPDF und Ninject

Verwendung von*Injektion der erste Schritt zur Integration von Ninject for .NET Core mit IronPDF ist die Einrichtung von Dependency Injection und IronPDF zur Erzeugung von PDFs in Ihrer Anwendung. Dies kann mit Hilfe dieser Schritt-für-Schritt-Anleitung erreicht werden:

Was ist IronPDF?

Um PDF-Dokumente zu erstellen, zu lesen und zu bearbeiten, können C#-Programme folgende Funktionen nutzenIronPDFeine funktionsreiche .NET PDF-Bibliothek. Mit diesem Tool können Entwickler auf einfache Weise HTML-, CSS- und JavaScript-Informationen in druckfertige, hochwertige PDF-Dateien umwandeln. Zu den wichtigsten Merkmalen gehört die FähigkeitpDFs aufteilen und kombinieren, kopf- und Fußzeilen hinzufügen, dokumente mit Wasserzeichen versehenundhTML in PDF konvertieren. IronPDF ist für eine Vielzahl von Anwendungen hilfreich, da es sowohl das .NET-Framework als auch .NET Core unterstützt.

Entwickler können PDFs ohne weiteres in ihre Programme integrieren, da sie einfach zu benutzen sind und eine Fülle von Dokumentationen bieten. IronPDF handhabt komplizierte Layouts und Formatierungen mit Leichtigkeit und stellt sicher, dass die ausgegebenen PDFs den ursprünglichen HTML-Text genau wiedergeben.

Ninject .NET Core(Wie es für Entwickler funktioniert): Abbildung 5 - IronPDF for .NET: Die C# PDF-Bibliothek

Merkmale von IronPDF

PDF-Erzeugung aus HTML

IronPDF hilft bei der Umwandlung von HTML, CSS und JavaScript in PDF-Dokumente. Es unterstützt moderne Webstandards wie Media-Queries und Responsive Design und eignet sich daher für die Verwendung von HTML und CSS zur dynamischen Gestaltung von PDF-Dokumenten, Berichten und Rechnungen.

PDF-Bearbeitung

Vorhandene PDF-Dateien können mit Text, Fotos und anderen Inhalten ergänzt werden. IronPDF ermöglicht die Extraktion von Text und Bildern aus PDF-Dateien, kombiniert mehrere PDFs in einer Datei, teilt PDF-Dateien in mehrere auf, fügt Wasserzeichen, Anmerkungen, Kopf- und Fußzeilen und vieles mehr auf flexible Weise ein.

PDF-Konvertierung

Mit IronPDF können Sie eine Vielzahl von Dateiformaten in PDF konvertieren, darunter Word-, Excel- und Bilddateien. Sie bietet außerdemUmwandlung von PDF in Bilder (PNG, JPEG, usw.).

Leistung und Zuverlässigkeit

Hohe Leistung und Zuverlässigkeit sind erwünschte Konstruktionsmerkmale in industriellen Umgebungen. Verwaltet große Dokumentensätze mit Leichtigkeit.

IronPDF installieren

Um die Werkzeuge zu erhalten, die Sie für die Arbeit mit PDFs in .NET-Projekten benötigen, installieren Sie das IronPDF-Paket.

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
VB   C#

Definieren Sie Schnittstellen und Implementierungen

Geben Sie die Schnittstelle an(IPdfService.cs) und Umsetzung(PdfService.cs) für die Erstellung von PDFs:

// IPdfService.cs
public interface IPdfService
{
    void GeneratePdf(string htmlContent, string outputPath);
}
// IPdfService.cs
public interface IPdfService
{
    void GeneratePdf(string htmlContent, string outputPath);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#
// PdfService.cs
using IronPdf;
public class PdfService : IPdfService
{
    public void GeneratePdf(string htmlContent, string outputPath)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF generated and saved to {outputPath}");
    }
}
// PdfService.cs
using IronPdf;
public class PdfService : IPdfService
{
    public void GeneratePdf(string htmlContent, string outputPath)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF generated and saved to {outputPath}");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Ein Ninject-Modul erstellen

Erstellen Sie ein Ninject-Modul namens NinjectBindings.cs, in dem Bindungen zwischen Schnittstellen und ihren entsprechenden Implementierungen konfiguriert werden:

// NinjectBindings.cs
using Ninject.Modules;
public class NinjectBindings : NinjectModule
{
    public override void Load()
    {
        Bind<IPdfService>().To<PdfService>().InSingletonScope();
    }
}
// NinjectBindings.cs
using Ninject.Modules;
public class NinjectBindings : NinjectModule
{
    public override void Load()
    {
        Bind<IPdfService>().To<PdfService>().InSingletonScope();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Verwendung von Ninject und IronPDF in der Anwendung

Richten Sie Ninject ein, um Abhängigkeiten aufzulösen, und verwenden Sie den IPdfService, um eine PDF-Datei in Ihrer Program.cs-Datei zu erstellen:

// Program.cs
using Ninject;
using System;
class Program
{
    static void Main(string[] args)
    {
        // Create a Ninject kernel and load the bindings
        var kernel = new StandardKernel(new NinjectBindings());
        // Resolve IPdfService instance
        var pdfService = kernel.Get<IPdfService>();
        // Define HTML content and output path
        string htmlContent = "<h1>Hello, IronPDF with Ninject!</h1><p>This PDF is generated using IronPDF and Ninject in a .NET Core application.</p>";
        string outputPath = "output.pdf";
        // Use the resolved service to generate a PDF
        pdfService.GeneratePdf(htmlContent, outputPath);
        // Dispose the kernel (optional, but recommended)
        kernel.Dispose();
    }
}
// Program.cs
using Ninject;
using System;
class Program
{
    static void Main(string[] args)
    {
        // Create a Ninject kernel and load the bindings
        var kernel = new StandardKernel(new NinjectBindings());
        // Resolve IPdfService instance
        var pdfService = kernel.Get<IPdfService>();
        // Define HTML content and output path
        string htmlContent = "<h1>Hello, IronPDF with Ninject!</h1><p>This PDF is generated using IronPDF and Ninject in a .NET Core application.</p>";
        string outputPath = "output.pdf";
        // Use the resolved service to generate a PDF
        pdfService.GeneratePdf(htmlContent, outputPath);
        // Dispose the kernel (optional, but recommended)
        kernel.Dispose();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Das obige Codebeispiel zeigt, wie man IronPDF und Ninject in eine Konsolenanwendung für .NET Core integriert. Die Anwendung verwendet Ninject, ein Dependency Injection Framework, um Abhängigkeiten zu verwalten und eine lose Kopplung zu fördern. Die Funktionalität zur Erstellung von PDFs mit IronPDF ist in der Schnittstelle IPdfService gekapselt, und ihre Implementierung erfolgt in der Klasse PdfService. Die Methode GeneratePdf, die von der Klasse PdfService implementiert wird, benötigt zwei Parameter: HTML-Inhalt und einen Ausgabepfad. Das IronPDF-Objekt ChromePdfRenderer wird verwendet, um die HTML-Zeichenfolge in eine PDF-Datei umzuwandeln, die dann im angegebenen Pfad gespeichert wird.

Um sicherzustellen, dass in der gesamten Anwendung nur eine einzige Instanz von PdfService verwendet wird, binden wir die Schnittstelle IPdfService an die Implementierung PdfService mit einem Singleton-Bereich in der Klasse NinjectBindings, einem Ninject-Modul. Wir erstellen einen Ninject-Kernel, laden die Bindungen aus NinjectBindings und lösen eine Instanz von IPdfService in der Datei Program.cs auf. Danach wird mit dem aufgelösten pdfService eine PDF-Datei aus vorgegebenen HTML-Inhalten erstellt und am angegebenen Ausgabeort gespeichert. Um Ressourcen frei zu machen, wird der Kernel schließlich entsorgt. Diese Integration zeigt, wie Ninject die robusten PDF-Generierungsfunktionen von IronPDF nutzt, um die Modularität, Testbarkeit und das Abhängigkeitsmanagement von .NET Core-Anwendungen zu verbessern.

Konsolenausgabe

Ninject .NET Core(Wie es für Entwickler funktioniert): Abbildung 6 - Konsolenausgabe für den obigen Code mit Ninject für Dependency Injection und IronPDF für die Konvertierung von HTML-Text in PDF.

Ausgabe PDF

Ninject .NET Core(Wie es für Entwickler funktioniert): Abbildung 7 - Mit IronPDF erzeugte PDF-Ausgabe.

Schlussfolgerung

Eine .NET Core-Anwendung, die Folgendes integriert*Injektion mitIronPDF zeigt die wirkungsvolle Kombination von starken PDF-Produktionsfähigkeiten und effizientem Abhängigkeitsmanagement. Ninject ermöglicht modulares Design, lose Kopplung und verbesserte Testbarkeit durch seinen leichtgewichtigen und anpassungsfähigen IoC-Container, der Abhängigkeiten effektiv und effizient verwaltet. Dadurch müssen sich die Entwickler nicht mehr mit den Feinheiten der Objekterzeugung und der Auflösung von Abhängigkeiten befassen, sondern können sich auf die Geschäftslogik und die Funktionalität konzentrieren.

Darüber hinaus,IronPDF bietet eine umfangreiche Sammlung von Werkzeugen zum Erstellen und Ändern von PDFs, mit denen Sie auf einfache Weise hochwertige PDFs aus HTML-Text oder anderen Datenquellen erstellen können. Verwendung von*Injektion die Verknüpfung von Diensten wie IPdfService mit ihren Implementierungen stellt sicher, dass die Komponenten ihrer Anwendungen leicht testbar, wiederverwendbar und wartbar sind.

Ninject und IronPDF erleichtern zusammen die Verwendung von Dependency Injection in .NET Core-Anwendungen und verbessern die Fähigkeit des Programms, ausgefeilte, dynamische PDFs zu erzeugen. Diese Kombination garantiert die Skalierbarkeit, eine gut strukturierte Architektur und die effektive Erfüllung verschiedener Geschäftsanforderungen Ihrer .NET Core-Anwendungen. Das gegebene Beispiel zeigt, wie modernste PDF-Funktionalität und zeitgemäße Dependency-Injection-Techniken nebeneinander bestehen können und eine solide Grundlage für die Entwicklung komplexerer Anwendungen bieten.

Mit demIronPDF Preisgestaltungvon $749 bietet IronPDF Entwicklern mehr Webanwendungen und Funktionalitäten sowie effizientere Entwicklung. Erreicht wird dies durch die Verschmelzung der Basisunterstützung mit dem unglaublich flexiblenIron Software Iron Suite.

IronPDF bietet auch einekostenlose Testlizenz die Übersetzung muss projektspezifisch sein, was es den Entwicklern leicht macht, das ideale Modell auszuwählen. Diese Vorteile ermöglichen es den Entwicklern, erfolgreich, schnell und kohärent Lösungen für eine breite Palette von Problemen zu implementieren.

< PREVIOUS
Microsoft.Extensions .DependencyInjection .NET 6 (Arbeiten mit PDF)
NÄCHSTES >
RestEase C# (Wie es für Entwickler funktioniert)

Sind Sie bereit, loszulegen? Version: 2024.12 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 11,810,873 Lizenzen anzeigen >