.NET-Klassenbibliotheken.NET Class Libraries

Klassenbibliotheken sind das Konzept der freigegebenen Bibliothek für .NET.Class libraries are the shared library concept for .NET. Sie können damit nützliche Funktionalität auf Module verteilen, die von mehreren Anwendungen verwendet werden können.They enable you to componentize useful functionality into modules that can be used by multiple applications. Sie können auch verwendet werden, um Funktionalität zu laden, die beim Start der Anwendung nicht benötigt wird bzw. nicht bekannt ist.They can also be used as a means of loading functionality that is not needed or not known at application startup. Klassenbibliotheken werden mithilfe des .NET Assembly-Dateiformats beschriebenen.Class libraries are described using the .NET Assembly file format.

Es gibt drei Arten von Klassenbibliotheken, die Sie verwenden können:There are three types of class libraries that you can use:

  • Plattformspezifische Klassenbibliotheken haben Zugriff auf alle APIs einer bestimmten Plattform (z.B. .NET Framework, Xamarin iOS), können jedoch nur von Apps und Bibliotheken verwendet werden, deren Ziel diese Plattform ist.Platform-specific class libraries have access to all the APIs in a given platform (for example, .NET Framework, Xamarin iOS), but can only be used by apps and libraries that target that platform.
  • Portable Klassenbibliotheken haben Zugriff auf eine Teilmenge der APIs und können von Apps und Bibliotheken verwendet werden, deren Ziel mehrere Plattformen sind.Portable class libraries have access to a subset of APIs, and can be used by apps and libraries that target multiple platforms.
  • .NET Core-Klassenbibliotheken führen das plattformspezifische und Portable-Bibliotheken-Konzept in einem einzelnen Modell zusammen, das das Beste von beidem bietet..NET Core class libraries are a merger of the platform-specific and portable library concept into a single model that provides the best of both.

Plattformspezifische KlassenbibliothekenPlatform-specific Class Libraries

Plattformspezifische Bibliotheken sind an eine einzige .NET-Implementierung gebunden (z.B. .NET Framework unter Windows) und können daher wichtige Abhängigkeiten von einer bekannten Ausführungsumgebung annehmen.Platform-specific libraries are bound to a single .NET implementation (for example, .NET Framework on Windows) and can therefore take significant dependencies on a known execution environment. Eine solche Umgebung stellt einen bekannten Satz von APIs (.NET- und BS-APIs) bereit, verwaltet den erwarteten Status (z.B. Windows-Registrierung) und macht ihn verfügbar.Such an environment will expose a known set of APIs (.NET and OS APIs) and will maintain and expose expected state (for example, Windows registry).

Entwickler, die plattformspezifische Bibliotheken erstellen, können die zugrunde liegende Plattform voll ausnutzen.Developers who create platform specific libraries can fully exploit the underlying platform. 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).The libraries will only ever run on that given platform, making platform checks or other forms of conditional code unnecessary (modulo single sourcing code for multiple platforms).

Plattformspezifische Bibliotheken waren der primäre Klassenbibliothekstyp für .NET Framework.Platform-specific libraries have been the primary class library type for the .NET Framework. Auch als andere .NET-Implementierungen aufkamen, blieben plattformspezifische Bibliotheken der dominierende Bibliothekstyp.Even as other .NET implementations emerged, platform-specific libraries remained the dominant library type.

Portable KlassenbibliothekenPortable Class Libraries

Portable Bibliotheken werden auf mehreren .NET-Implementierungen unterstützt.Portable libraries are supported on multiple .NET implementations. 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.They can still take dependencies on a known execution environment, however, the environment is a synthetic one that is generated by the intersection of a set of concrete .NET implementations. Dies bedeutet, dass es sich bei verfügbar gemachten APIs und Plattformannahmen um eine Teilmenge dessen handelt, was einer plattformspezifischen Bibliothek zur Verfügung stünde.This means that exposed APIs and platform assumptions are a subset of what would be available to a platform-specific library.

Wenn Sie eine portable Bibliothek erstellen, wählen Sie eine Plattformkonfiguration.You choose a platform configuration when you create a portable library. Dabei handelt es sich um den Satz von Plattformen, die Sie unterstützen müssen (z.B. .NET Framework 4.5 +, Windows Phone 8.0 +).These are the set of platforms that you need to support (for example, .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.The more platforms you opt to support, the fewer APIs and fewer platform assumptions you can make, the lowest common denominator. Dieses Merkmal erscheint vielleicht auf den ersten Blick verwirrend, da Benutzer häufig denken: „Mehr ist besser“ und dann feststellen müssen, dass eine höhere Zahl unterstützter Plattformen zu weniger verfügbaren APIs führt.This characteristic can be confusing at first, since people often think "more is better", but find that more supported platforms results in fewer available APIs.

Viele Bibliotheksentwickler sind von der Produktion mehrerer plattformspezifischer Bibliotheken aus einer Quelle (mit bedingten Kompilierungsdirektiven) zu portablen Bibliotheken gewechselt.Many library developers have switched from producing multiple platform-specific libraries from one source (using conditional compilation directives) to portable libraries. 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.There are several approaches for accessing platform-specific functionality within portable libraries, with bait-and-switch being the most widely accepted technique at this point.

.NET Standard-Klassenbibliotheken.NET Standard Class Libraries

.NET Standard-Bibliotheken sind ein Ersatz für plattformspezifische und portable Bibliothekenkonzepte..NET Standard libraries are a replacement of the platform-specific and portable libraries concepts. Sie sind plattformspezifisch in dem Sinne, dass sie die gesamte Funktionalität der zugrunde liegenden Plattform (keine synthetischen Plattformen oder Plattformschnittmengen) verfügbar machen.They are platform-specific in the sense that they expose all functionality from the underlying platform (no synthetic platforms or platform intersections). Sie sind portabel in dem Sinne, dass sie auf allen unterstützenden Plattformen funktionieren.They are portable in the sense that they work on all supporting platforms.

.NET Standard macht einige Bibliotheksverträge verfügbar.The .NET Standard exposes a set of library contracts. .NET-Implementierungen müssen jeden Vertrag entweder vollständig oder überhaupt nicht unterstützen..NET implementations must support each contract fully or not at all. Jede Implementierung unterstützt deshalb eine bestimmte Menge an .NET Standard-Verträgen.Each implementation, therefore, supports a set of .NET Standard contracts. Die logische Konsequenz ist, dass jede .NET Standard-Klassenbibliothek auf den Plattformen unterstützt wird, die ihre Vertragsverpflichtungen unterstützt.The corollary is that each .NET Standard class library is supported on the platforms that support it’s contract dependencies.

Der .NET Standard macht nicht die gesamte Funktionalität von .NET Framework verfügbar (dies ist auch nicht das Ziel), aber er macht viele weitere APIs als portable Klassenbibliotheken verfügbar.The .NET Standard does not expose the entire functionality of the .NET Framework (nor is that a goal), however, they do expose many more APIs than Portable Class Libraries. Mit der Zeit werden weitere APIs hinzugefügt.More APIs will be added over time.

Die folgenden Plattformen unterstützen .NET Standard-Bibliotheken:The following platforms support .NET Standard libraries:

  • .NET Core.NET Core
  • ASP.NET CoreASP.NET Core
  • .NET Framework 4.5+.NET Framework 4.5+
  • Windows Store-AppsWindows Store Apps
  • Windows Phone 8+Windows Phone 8+

Mono-KlassenbibliothekenMono Class Libraries

Klassenbibliotheken, einschließlich der drei oben beschriebenen Typen von Bibliotheken, werden unter Mono unterstützt.Class libraries are supported on Mono, including the three types of libraries described above. Mono ist häufig (richtigerweise) als eine plattformübergreifende Implementierung von Microsoft .NET Framework angesehen worden.Mono has often been seen (correctly) as a cross-platform implementation of the Microsoft .NET Framework. Dies lag teilweise daran, dass plattformspezifische .NET Framework-Bibliotheken in der Mono-Runtime ohne Änderung oder erneute Kompilierung ausgeführt werden konnten.In part, this was because platform-specific .NET Framework libraries could run on the Mono runtime without modification or recompilation. Dieses Merkmal existierte vor der Erstellung portabler Klassenbibliotheken, und es war naheliegend, so binäre Portabilität zwischen .NET Framework und Mono zu ermöglichen (obwohl es nur in einer Richtung funktionierte).This characteristic was in place before the creation of portable class libraries, so was an obvious choice to enable binary portability between the .NET Framework and Mono (although it only worked in one direction).