Auf Englisch lesen

Freigeben über


.NET-Klassenbibliotheken

Klassenbibliotheken sind das Konzept der freigegebenen Bibliothek für .NET. Sie ermöglichen es Ihnen, nützliche Funktionen in Module zu integrieren, die von mehreren Anwendungen verwendet werden können. Sie können auch als Möglichkeit zum Laden von Funktionen verwendet werden, die beim Starten der Anwendung nicht benötigt oder nicht bekannt sind. Klassenbibliotheken werden mithilfe des .NET Assembly-Dateiformatsbeschrieben.

Es gibt drei Arten von Klassenbibliotheken, die Sie verwenden können:

  • plattformspezifische Klassenbibliotheken haben Zugriff auf alle APIs in einer bestimmten Plattform (z. B. .NET Framework unter Windows), können aber nur von Apps und Bibliotheken verwendet werden, die auf diese Plattform abzielen.
  • Portable Klassenbibliotheken haben Zugriff auf eine Teilmenge der APIs und können von Apps und Bibliotheken verwendet werden, deren Ziel mehrere Plattformen sind.
  • .NET Standard Klassenbibliotheken sind eine Fusion des plattformspezifischen und portablen Bibliothekskonzepts in ein einzelnes Modell, das das Beste aus beiden bietet.

Plattformspezifische Klassenbibliotheken

Plattformspezifische Bibliotheken sind an eine einzelne .NET-Plattform (z. B. .NET Framework unter Windows) gebunden und können daher erhebliche Abhängigkeiten von einer bekannten Ausführungsumgebung annehmen. Eine solche Umgebung macht einen bekannten Satz von APIs (.NET- und Betriebssystem-APIs) verfügbar und verwaltet und macht den erwarteten Zustand (z. B. die Windows-Registrierung) verfügbar.

Entwickler, die plattformspezifische Bibliotheken erstellen, können die zugrunde liegende Plattform vollständig nutzen. Die Bibliotheken werden immer nur auf der jeweiligen Plattform ausgeführt, sodass Plattformüberprüfungen oder andere Formen bedingten Codes überflüssig sind (Modulo-Single Sourcing-Code für mehrere Plattformen).

Plattformspezifische Bibliotheken sind der primäre Klassenbibliothekstyp für .NET Framework. Selbst wenn andere .NET-Implementierungen entstanden sind, blieben plattformspezifische Bibliotheken der dominante Bibliothekstyp.

Portable Klassenbibliotheken

Portable Bibliotheken werden für mehrere .NET-Implementierungen unterstützt. Sie können dennoch Abhängigkeiten von einer bekannten Ausführungsumgebung annehmen, die Umgebung ist jedoch eine synthetische, die durch die Schnittmenge konkreter .NET-Implementierungen gebildet wird. Offengelegte APIs und Plattformvoraussetzungen sind eine Teilmenge dessen, was für eine plattformspezifische Bibliothek verfügbar wäre.

Sie wählen eine Plattformkonfiguration aus, wenn Sie eine portable Bibliothek erstellen. Die Plattformkonfiguration ist der Satz von Plattformen, die Sie unterstützen müssen (z. B. .NET Framework 4.5+, Windows Phone 8.0+). Je höher die Zahl der Plattformen ist, für deren Unterstützung Sie sich entscheiden, desto weniger APIs und Plattformannahmen sind möglich, der kleinste gemeinsame Nenner. Diese Eigenschaft kann zunächst verwirrend sein, da die Leute oft denken, dass "mehr ist besser" ist, aber feststellen, dass mehr unterstützte Plattformen zu weniger verfügbaren APIs führen.

Viele Bibliotheksentwickler haben von der Erstellung mehrerer plattformspezifischer Bibliotheken aus einer Quelle (mit bedingten Kompilierungsdirektiven) zu tragbaren Bibliotheken gewechselt. Es gibt mehrere Ansätze für den Zugriff auf plattformspezifische Funktionalität in portablen Bibliotheken, wobei das Lockvogelangebot im Moment das gängigste Verfahren ist.

.NET Standard-Klassenbibliotheken

.NET Standard-Bibliotheken sind ein Ersatz der plattformspezifischen und portablen Bibliothekenkonzepte. Sie sind plattformspezifisch in dem Sinne, dass sie die gesamte Funktionalität der zugrunde liegenden Plattform (keine synthetischen Plattformen oder Plattformschnittmengen) verfügbar machen. Sie sind in dem Sinne portierbar, dass sie auf allen unterstützenden Plattformen arbeiten.

.NET Standard macht einige Bibliotheksverträge verfügbar. .NET-Implementierungen müssen jeden Vertrag vollständig oder gar nicht unterstützen. Jede Implementierung unterstützt daher eine Reihe von .NET Standard-Verträgen. Die logische Konsequenz ist, dass jede .NET Standard-Klassenbibliothek auf den Plattformen unterstützt wird, die ihre Vertragsverpflichtungen unterstützt.

.NET Standard macht nicht die gesamte Funktionalität von .NET Framework verfügbar (dies ist auch nicht das Ziel), aber die Bibliotheken machen viele weitere APIs als portable Klassenbibliotheken verfügbar.

Die folgenden Implementierungen unterstützen .NET Standardbibliotheken:

  • .NET Core
  • .NET Framework
  • Mono
  • Universelle Windows-Plattform (UWP)

Weitere Informationen finden Sie unter .NET Standard.

Mono-Klassenbibliotheken

Klassenbibliotheken werden in Mono unterstützt, einschließlich der drei zuvor beschriebenen Bibliothekentypen. Mono wird häufig als plattformübergreifende Implementierung von .NET Framework angesehen. Dies liegt daran, dass plattformspezifische .NET Framework-Bibliotheken ohne Änderung oder Neukompilierung auf der Mono-Laufzeit ausgeführt werden können. Diese Eigenschaft war vor der Erstellung tragbarer Klassenbibliotheken vorhanden, daher eine offensichtliche Entscheidung, die binäre Portabilität zwischen .NET Framework und Mono zu ermöglichen (obwohl die Portabilität nur in eine Richtung funktionierte).