Einführung in .NETIntroduction to .NET

.NET ist eine kostenlose Open-Source-Entwicklungsplattform zum Entwickeln von vielen verschiedenen Arten von Apps. Beispiele:.NET is a free, open-source development platform for building many kinds of apps, such as:

Verwenden Sie Klassenbibliotheken, um Funktionen für verschiedene Apps und App-Typen zu verwenden.Share functionality among different apps and app types by using class libraries.

Mit .NET sind Ihr Code und Ihre Projektdateien einheitlich, unabhängig davon, welche Art von App Sie entwickeln.With .NET, your code and project files look and feel the same no matter which type of app you're building. Sie haben mit jeder App Zugriff auf die gleiche Runtime, API und die gleichen Sprachfunktionen.You have access to the same runtime, API, and language capabilities with each app.

PlattformübergreifendCross platform

Sie können .NET-Apps für viele Betriebssysteme einschließlich der folgenden erstellen:You can create .NET apps for many operating systems, including:

  • WindowsWindows
  • macOSmacOS
  • LinuxLinux
  • AndroidAndroid
  • iOSiOS
  • tvOStvOS
  • watchOSwatchOS

Dies sind die unterstützten Prozessorarchitekturen:Supported processor architectures include:

  • x64x64
  • x86x86
  • ARM32ARM32
  • ARM64ARM64

.NET ermöglicht die Verwendung von plattformspezifischen Funktionen wie Betriebssystem-APIs..NET lets you use platform-specific capabilities, such as operating system APIs. Beispiele hierfür sind Windows Forms und WPF unter Windows sowie die nativen Bindungen mit jeder mobilen Plattform von Xamarin.Examples are Windows Forms and WPF on Windows and the native bindings to each mobile platform from Xamarin.

Weitere Information finden Sie unter Unterstützte Lebenszyklusrichtlinien für das Betriebssystem und .NET Core-RID-Katalog.For more information, see Supported OS lifecycle policy and .NET RID Catalog.

Open SourceOpen source

.NET ist ein Open-Source-Angebot und verwendet MIT- und Apache 2-Lizenzen..NET is open source, using MIT and Apache 2 licenses. .NET ist ein Projekt der .NET Foundation..NET is a project of the .NET Foundation.

Weitere Informationen finden Sie in der Liste der Projektrepositorys auf github.com.For more information, see the list of project repositories on GitHub.com.

SupportSupport

.NET wird von Microsoft unter Windows, macOS und Linux unterstützt..NET is supported by Microsoft on Windows, macOS, and Linux. Es wird regelmäßig jeden zweiten Dienstag des Monats im Hinblick auf Sicherheit und Qualität aktualisiert.It's updated regularly for security and quality, on the second Tuesday of each month.

Binäre .NET-Distributionen von Microsoft werden auf von Microsoft verwalteten Servern in Azure entwickelt und getestet und entsprechen den Best Practices von Microsoft in Bezug auf Entwicklung und Sicherheit..NET binary distributions from Microsoft are built and tested on Microsoft-maintained servers in Azure and follow Microsoft engineering and security practices.

Red Hat unterstützt .NET unter Red Hat Enterprise Linux (RHEL).Red Hat supports .NET on Red Hat Enterprise Linux (RHEL). Red Hat und Microsoft arbeiten eng zusammen, um sicherzustellen, dass .NET Core ebenso auf RHEL funktioniert.Red Hat and Microsoft collaborate to ensure that .NET Core works well on RHEL.

Tizen unterstützt .NET auf Tizen-Plattformen.Tizen supports .NET on Tizen platforms.

Weitere Informationen finden Sie unter Releases und Unterstützung für .NET Core und .NET 5.For more information, see Releases and support for .NET Core and .NET 5.

Tools und ProduktivitätTools and productivity

.NET bietet Ihnen eine Auswahl von Sprachen, integrierten Entwicklungsumgebungen (IDEs) und anderen Tools..NET gives you a choice of languages, integrated development environments (IDEs), and other tools.

ProgrammiersprachenProgramming languages

.NET unterstützt drei Programmiersprachen:.NET supports three programming languages:

  • C#C#

    C# (Aussprache „C Sharp“) ist eine moderne, objektorientierte und typsichere Programmiersprache.C# (pronounced "See Sharp") is a modern, object-oriented, and type-safe programming language. C# hat seine Wurzeln in der C-Sprachenfamilie und ist Programmierern, die mit C, C++, Java und JavaScript arbeiten, sofort vertraut.C# has its roots in the C family of languages and will be immediately familiar to C, C++, Java, and JavaScript programmers.

  • F#F#

    Die Sprache F# unterstützt funktionale, objektorientierte und imperative Programmiermodelle.The F# language supports functional, object-oriented, and imperative programming models.

  • Visual BasicVisual Basic

    Von allen .NET-Sprachen gleicht die Syntax von Visual Basic der menschlichen Sprache am meisten, was das Lernen vereinfacht.Among the .NET languages, the syntax of Visual Basic is the closest to ordinary human language, which can make it easier to learn. Im Gegensatz zu den Programmiersprachen C# und F#, für die Microsoft aktiv neue Features entwickelt, ist die Visual Basic-Sprache stabil.Unlike C# and F#, for which Microsoft is actively developing new features, the Visual Basic language is stable. Visual Basic wird zwar nicht für Web-Apps, aber für Web-APIs unterstützt.Visual Basic isn't supported for web apps, but it is supported for web APIs.

Im Folgenden finden Sie einige Funktionen, die die .NET-Sprachen unterstützen:Here are some of the capabilities that .NET languages support:

IDEsIDEs

Die integrierten Entwicklungsumgebungen für .NET umfassen Folgendes:The integrated development environments for .NET include:

  • Visual StudioVisual Studio

    Die Ausführung ist nur unter Windows möglich.Runs on Windows only. Durch die umfangreiche integrierte Funktionalität ist die Arbeit mit .NET möglich.Has extensive built-in functionality designed to work with .NET. Die Community-Edition ist für Studenten, Open-Source-Mitwirkende und Einzelpersonen kostenlos.The Community edition is free for students, open-source contributors, and individuals.

  • Visual Studio CodeVisual Studio Code

    Die Ausführung unter Windows, macOS und Linux ist möglich.Runs on Windows, macOS, and Linux. Kostenlos und Open Source.Free and open source. Es sind Erweiterungen für die Arbeit mit .NET-Sprachen verfügbar.Extensions are available for working with .NET languages.

  • Visual Studio für MacVisual Studio for Mac

    Die Ausführung ist nur unter macOS möglich.Runs on macOS only. Hiermit können .NET-Apps und Spiele für iOS, Android und das Web entwickelt werden.For developing .NET apps and games for iOS, Android, and web.

  • GitHub CodespacesGitHub Codespaces

    Dies ist eine Visual Studio Code-Onlineumgebung, die sich derzeit in der Betaversion befindet.An online Visual Studio Code environment, currently in beta.

SDK und RuntimesSDK and runtimes

Das .NET SDK besteht aus mehreren Bibliotheken und Tools zum Entwickeln und Ausführen von .NET-Anwendungen.The .NET SDK is a set of libraries and tools for developing and running .NET applications.

Wenn Sie .NET herunterladen, können Sie das SDK oder eine Runtime wie die .NET- oder ASP.NET Core-Runtime auswählen.When you download .NET, you can choose the SDK or a runtime, such as the .NET runtime or the ASP.NET Core runtime. Installieren Sie die Runtime auf einem Computer, den Sie für die Ausführung von .NET-Apps vorbereiten möchten.Install a runtime on a machine that you want to prepare for running .NET apps. Installieren Sie das SDK auf dem Computer, den Sie für das Entwickeln verwenden möchten.Install the SDK on a machine that you want to use for development. Wenn Sie das SDK herunterladen, erhalten Sie automatisch auch die Runtimes.When you download the SDK, you automatically get the runtimes with it.

Beim Download des SDK werden die folgenden Komponenten heruntergeladen:The SDK download includes the following components:

  • .NET-CLI:The .NET CLI. Sie können diese Befehlszeilentools für die lokale Entwicklung und Continuous-Integration-Skripts verwenden.Command-line tools that you can use for local development and continuous integration scripts.
  • dotnet-TreiberThe dotnet driver. Dies ist ein CLI-Befehl, der frameworkabhängige Apps ausführt.A CLI command that runs framework-dependent apps.
  • Roslyn- und F#-ProgrammiersprachencompilerThe Roslyn and F# programming language compilers.
  • MSBuild-Build-EngineThe MSBuild build engine.
  • .NET-Runtime:The .NET runtime. Diese bietet ein Typsystem, eine Funktion zum Laden von Assemblys, einen Garbage Collector, native Interoperabilität und andere grundlegende Dienste.Provides a type system, assembly loading, a garbage collector, native interop, and other basic services.
  • Laufzeitbibliotheken.Runtime libraries. Diese umfassen primitive Datentypen und grundlegende Hilfsprogramme.Provides primitive data types and fundamental utilities.
  • ASP.NET Core-Runtime:The ASP.NET Core runtime. Diese bietet grundlegende Dienste für mit dem Internet verbundene Apps (z. B. Web-Apps, IoT-Apps und mobile Back-Ends).Provides basic services for internet-connected apps, such as web apps, IoT apps, and mobile backends.
  • Desktopruntime:The desktop runtime. Hier sind grundlegende Dienste für Windows-Desktop-Apps einschließlich Windows Forms und WPF enthalten.Provides basic services for Windows desktop apps, including Windows Forms and WPF.

Beim Download der Runtime werden die folgenden Komponenten heruntergeladen:The runtime download includes the following components:

  • Optional die Desktop- oder ASP.NET Core-RuntimeOptionally, the desktop or ASP.NET Core runtime.
  • .NET-Runtime:The .NET runtime. Diese bietet ein Typsystem, eine Funktion zum Laden von Assemblys, einen Garbage Collector, native Interoperabilität und andere grundlegende Dienste.Provides a type system, assembly loading, a garbage collector, native interop, and other basic services.
  • Laufzeitbibliotheken.Runtime libraries. Diese umfassen primitive Datentypen und grundlegende Hilfsprogramme.Provides primitive data types and fundamental utilities.
  • dotnet-TreiberThe dotnet driver. Dies ist ein CLI-Befehl, der frameworkabhängige Apps ausführt.A CLI command that runs framework-dependent apps.

Weitere Informationen finden Sie in den folgenden Ressourcen:For more information, see the following resources:

Projektsystem und MSBuildProject system and MSBuild

Eine .NET-App wird mithilfe von MSBuild aus Quellcode erstellt.A .NET app is built from source code by using MSBuild. Eine Projektdatei ( .csproj, .fsproj oder .vbproj) gibt Ziele und zugeordnete Aufgaben an, die für das Kompilieren, Packen und Veröffentlichen von Code zuständig sind.A project file (.csproj, .fsproj, or .vbproj) specifies targets and associated tasks that are responsible for compiling, packing, and publishing code. Es gibt SDK-Bezeichner, die auf Standardsammlungen von Zielen und Aufgaben verweisen.There are SDK identifiers that refer to standard collections of targets and tasks. Die Verwendung dieser Bezeichner trägt dazu bei, dass Projektdateien klein und einfach zu verwenden sind.The use of these identifiers helps keep project files small and easy to work with. Dies ist beispielsweise eine Projektdatei für eine Konsolen-App:For example, here is a project file for a console app:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>
</Project>

Dies ist ein Beispiel für eine Web-App:And here's one for a web app:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>
</Project>

In diesen Beispielen gibt das Sdk-Attribut des Elements Project mehrere MSBuild-Ziele und -Aufgaben an, die das Projekt erstellen.In these examples, the Sdk attribute of the Project element specifies a set of MSBuild targets and tasks that build the project. Das TargetFramework-Element gibt die .NET-Version an, von der die App abhängt.The TargetFramework element specifies the .NET version that the app depends on. Sie können die Projektdatei bearbeiten, um zusätzliche Ziele und Aufgaben hinzuzufügen, die für das Projekt spezifisch sind.You can edit the project file to add additional targets and tasks specific to the project.

Weitere Informationen finden Sie unter .NET SDKs für Projekte und Zielframeworks in Projekten im SDK-Format.For more information, see .NET project SDK overview and Target frameworks.

CI/CDCI/CD

MSBuild und die .NET-CLI können mit verschiedenen Continuous-Integration-Tools und -Umgebungen verwendet werden. Beispiele:MSBuild and the .NET CLI can be used with various continuous integration tools and environments, such as:

Weitere Informationen finden Sie unter Verwenden des .NET Core SDK und der zugehörigen Tools in Continuous Integration (CI).For more information, see Using .NET SDK and tools in Continuous Integration (CI)

NuGetNuGet

NuGet ist ein Open-Source-Paket-Manager, der für .NET konzipiert ist.NuGet is an open-source package manager designed for .NET. Ein NuGet-Paket ist eine ZIP-Datei mit der Erweiterung .nupkg, die kompilierten Code (DLLs), andere Dateien im Zusammenhang mit diesem Code und ein beschreibendes Manifest enthält, in dem Informationen wie die Versionsnummer des Pakets enthalten sind.A NuGet package is a .zip file with the .nupkg extension that contains compiled code (DLLs), other files related to that code, and a descriptive manifest that includes information like the package's version number. Entwickler, die Code teilen möchten, erstellen und veröffentlichen Pakete auf nuget.org oder einem privaten Host.Developers with code to share create packages and publish them to nuget.org or a private host. Entwickler, die freigegebenen Code verwenden möchten, fügen ein Paket zu ihrem Projekt hinzu und können dann die API abrufen, die vom Paket in ihrem Projektcode verfügbar gemacht wird.Developers who want to use shared code add a package to their project and can then call the API exposed by the package in their project code.

Weitere Informationen finden Sie in der NuGet-Dokumentation.For more information, see NuGet documentation.

.NET interaktiv.NET Interactive

.NET Interactive ist eine Gruppe von CLI-Tools und APIs, die Benutzern das Erstellen interaktiver Funktionen für das Web, Markdown und Notebooks ermöglicht..NET Interactive is a group of CLI tools and APIs that enable users to create interactive experiences across the web, markdown, and notebooks.

Weitere Informationen finden Sie in den folgenden Ressourcen:For more information, see the following resources:

AusführungsmodelleExecution models

.NET-Apps führen verwalteten Code in einer Runtimeumgebung aus, die als Common Language Runtime (CLR) bezeichnet wird..NET apps run managed code in a runtime environment known as the Common Language Runtime (CLR).

CLRCLR

Die .NET-CLR ist eine plattformübergreifende Runtime, die die Unterstützung für Windows, macOS und Linux umfasst.The .NET CLR is a cross-platform runtime that includes support for Windows, macOS, and Linux. Die CLR behandelt die Speicherbelegung und -verwaltung.The CLR handles memory allocation and management. Bei der CLR handelt es sich auch um einen virtuellen Computer, der nicht nur Apps ausführt, sondern auch mithilfe eines Just-In-Time-Compilers (JIT) Code generiert und kompiliert.The CLR is also a virtual machine that not only executes apps but also generates and compiles code using a just-in-time (JIT) compiler.

Weitere Informationen finden Sie unter Übersicht: Common Language Runtime (CLR).For more information, see Common Language Runtime (CLR) overview.

JIT-Compiler und ILJIT compiler and IL

.NET-Sprachen auf höherer Ebene, z.B. C#, werden zu einem hardwareunabhängigen Anweisungssatz kompiliert, der als Zwischensprache (Intermediate Language, IL) bezeichnet wird.Higher-level .NET languages, such as C#, compile down to a hardware-agnostic instruction set, which is called Intermediate Language (IL). Wenn eine App ausgeführt wird, übersetzt der JIT-Compiler Zwischensprache (IL) in einen Computercode, die der Prozessor versteht.When an app runs, the JIT compiler translates IL to machine code that the processor understands. Die JIT-Kompilierung erfolgt auf dem gleichen Computer, auf dem auch der Code ausgeführt wird.JIT compilation happens on the same machine that the code is going to run on.

Da die JIT-Kompilierung während der Ausführung der Anwendung stattfindet, ist die Kompilierzeit Teil der Laufzeit.Since JIT compilation occurs during execution of the application, the compilation time is part of the run time. Daher müssen JIT-Compiler eine Balance zwischen der Zeit, die in die Optimierung des Codes investiert werden kann, und den Ersparnissen finden, die der resultierende Code erzeugt.Therefore, JIT compilers have to balance time spent optimizing code against the savings that the resulting code can produce. Ein JIT-Compiler kennt jedoch die tatsächliche Hardware und befreit die Entwickler davon, verschiedene Implementierungen für verschiedene Plattformen bereitstellen zu müssen.But a JIT compiler knows the actual hardware and can free developers from having to ship different implementations for different platforms.

Der .NET-JIT-Compiler kann eine mehrstufige Kompilierung durchführen, was bedeutet, dass einzelne Methoden zur Laufzeit erneut kompiliert werden können.The .NET JIT compiler can do tiered compilation, which means it can recompile individual methods at run time. Dieses Feature ermöglicht eine schnelle Kompilierung, während immer noch eine stark optimierte Version des Codes für häufig verwendete Methoden erstellt werden kann.This feature lets it compile quickly while still being able to produce a highly tuned version of the code for frequently used methods.

Weitere Informationen finden Sie unter Verwalteter Ausführungsprozess und Mehrstufige Kompilierung.For more information, see Managed execution process and Tiered compilation.

AOT-CompilerAOT compiler

Der JIT-Compiler ist die Standardeinstellung für die meisten .NET-Workloads, aber .NET bietet zwei Formen der Ahead-of-Time-Kompilierung (AOT):The default experience for most .NET workloads is the JIT compiler, but .NET offers two forms of ahead-of-time (AOT) compilation:

  • Einige Szenarios erfordern eine vollständige AOT-Kompilierung.Some scenarios require 100% AOT compilation. Ein Beispiel hierfür ist iOS.An example is iOS.
  • In anderen Szenarios wird für einen Großteil des App-Codes eine AOT-Kompilierung, teilweise aber auch eine JIT-Kompilierung durchgeführt.In other scenarios, most of an app's code is AOT-compiled but some is JIT-compiled. Einige Codemuster eignen sich nicht für die AOT-Kompilierung (z. B. Generics).Some code patterns aren't friendly to AOT (like generics). Ein Beispiel für diese Form der AOT-Kompilierung ist die ReadyToRun-Veröffentlichungsoption.An example of this form of AOT compilation is the ready-to-run publish option. Diese Form bietet nur die Vorteile und keine Nachteile der AOT-Kompilierung.This form of AOT offers the benefits of AOT without its drawbacks.

Automatische SpeicherverwaltungAutomatic memory management

Der Garbage Collector (GC) verwaltet die Belegung und Freigabe von Arbeitsspeicher für Anwendungen.The garbage collector (GC) manages the allocation and release of memory for applications. Jedes Mal, wenn Ihr Code ein neues Objekt erstellt, belegt die CLR Speicher für das Objekt aus dem verwalteten Heap.Each time your code creates a new object, the CLR allocates memory for the object from the managed heap. Solange ein Adressbereich im verwalteten Heap verfügbar ist, reserviert die Laufzeit Arbeitsspeicher für neue Objekte.As long as address space is available in the managed heap, the runtime continues to allocate space for new objects. Wenn nicht genügend freier Arbeitsspeicher übrig bleibt, sucht der GC nach Objekten im verwalteten Heap, die nicht mehr von der Anwendung verwendet werden.When not enough free address space remains, the GC checks for objects in the managed heap that are no longer being used by the application. Anschließend wird dieser Arbeitsspeicher freigegeben.It then reclaims that memory.

Der GC ist nur einer der CLR-Dienste, die bei der Sicherstellung der Speichersicherheit helfen.The GC is one of the CLR services that help ensure memory safety. Ein Programm ist speichersicher, wenn es nur auf belegten Speicherplatz zugreift.A program is memory safe if it accesses only allocated memory. Beispielsweise stellt die Runtime sicher, dass eine App nicht auf belegten Arbeitsspeicher außerhalb des zulässigen Bereichs eines Arrays zugreift.For instance, the runtime ensures that an app doesn't access unallocated memory beyond the bounds of an array.

Weitere Informationen finden Sie unter Automatic Memory Management und Grundlagen der Garbage Collection.For more information, see Automatic memory management and Fundamentals of garbage collection.

Arbeiten mit nicht verwalteten RessourcenWorking with unmanaged resources

Manchmal muss Code auf nicht verwaltete Ressourcen verweisen.Sometimes code needs to reference unmanaged resources. Nicht verwaltete Ressourcen sind Ressourcen, die nicht automatisch von der .NET-Runtime verwaltet werden.Unmanaged resources are resources that aren't automatically maintained by the .NET runtime. Ein Dateihandle ist z.B. eine nicht verwaltete Ressource.For example, a file handle is an unmanaged resource. Ein FileStream-Objekt ist ein verwaltetes Objekt, aber es verweist auf ein Dateihandle, das nicht verwaltet ist.A FileStream object is a managed object, but it references a file handle, which is unmanaged. Wenn Sie mit FileStream fertig sind, müssen Sie das Dateihandle explizit freigeben.When you're done using the FileStream, you need to explicitly release the file handle.

In .NET implementieren Objekte, die auf nicht verwaltete Ressourcen verweisen, die IDisposable-Schnittstelle.In .NET, objects that reference unmanaged resources implement the IDisposable interface. Wenn Sie mit dem Objekt fertig sind, können Sie die Dispose()-Methode des Objekts aufrufen, die für die Freigabe nicht verwalteter Ressourcen zuständig ist.When you're done using the object, you call the object's Dispose() method, which is responsible for releasing any unmanaged resources. Die .NET-Sprachen bieten eine bequeme using-Anweisung (C#, F#, VB), die sicherstellt, dass die Dispose-Methode aufgerufen wird.The .NET languages provide a convenient using statement (C#, F#, VB) that ensures the Dispose method is called.

Weitere Informationen finden Sie unter Bereinigen von nicht verwalteten Ressourcen.For more information, see Cleaning up unmanaged resources.

BereitstellungsmodelleDeployment models

.NET-Apps können in zwei verschiedenen Modi veröffentlicht werden:.NET apps can be published in two different modes:

  • Bei der Veröffentlichung als eigenständige App wird eine ausführbare Datei erstellt, die die .NET-Runtime und -Bibliotheken sowie die Anwendung und zugehörige Abhängigkeiten enthält.Publishing an app as self-contained produces an executable file that includes the .NET runtime and libraries, and the application and its dependencies. Benutzer der Anwendung können diese auf einem Computer ausführen, auf dem die .NET-Runtime nicht installiert ist.Users of the application can run it on a machine that doesn't have the .NET runtime installed. Eigenständige Apps sind plattformspezifisch und können optional mithilfe einer Form der AOT-Kompilierung veröffentlicht werden.Self-contained apps are platform-specific, and they can optionally be published using a form of AOT compilation.

  • Bei der Veröffentlichung als frameworkabhängige App werden eine ausführbare Datei und Binärdateien (DLL-Dateien) erstellt, die nur die Anwendung selbst und ihre Abhängigkeiten enthalten.Publishing an app as framework-dependent produces an executable file and binary files (.dll files) that include only the application itself and its dependencies. Benutzer der Anwendung müssen die .NET-Runtime separat installieren.Users of the application have to separately install the .NET runtime. Die ausführbare Datei ist plattformspezifisch, aber die DLL-Dateien der frameworkabhängigen Anwendungen sind plattformübergreifend einsetzbar.The executable file is platform-specific, but the .dll files of framework-dependent applications are cross-platform.

    Sie können parallel mehrere Versionen der Runtime installieren, um frameworkabhängige Apps auszuführen, die auf verschiedene Runtimeversionen abzielen.You can install multiple versions of the runtime side by side to run framework-dependent apps that target different versions of the runtime. Weitere Informationen finden Sie unter Zielframeworks in Projekten im SDK-Format.For more information, see Target frameworks.

Ausführbare Dateien werden für bestimmte Zielplattformen erstellt, die Sie mit einem Runtimebezeichner (RID) angeben.Executables are produced for specific target platforms, which you specify with a runtime identifier (RID).

Weitere Informationen finden Sie unter Übersicht über die .NET Core-Anwendungsveröffentlichung und Einführung zu .NET und Docker.For more information, see .NET application publishing overview and Introduction to .NET and Docker.

RuntimebibliothekenRuntime libraries

.NET verfügt über viele verschiedene Standardklassenbibliotheken, die als Runtimebibliotheken, Frameworkbibliotheken oder Basisklassenbibliothek (BCL) bezeichnet werden..NET has an expansive standard set of class libraries, known as runtime libraries, framework libraries, or the base class library (BCL). Diese Bibliotheken bieten Implementierungen für viele allgemeine und workloadspezifische Typen und Hilfsprogrammfunktionen.These libraries provide implementations for many general-purpose and workload-specific types and utility functionality.

Im Folgenden finden Sie einige Beispiele für Typen, die in den .NET-Runtimebibliotheken definiert sind:Here are some examples of types defined in the .NET runtime libraries:

Weitere Informationen finden Sie in der Übersicht über Runtimebibliotheken.For more information, see the Runtime libraries overview. Der Quellcode für die Bibliotheken befindet sich im GitHub-Repository „dotnet/runtime“.The source code for the libraries is in the GitHub dotnet/runtime repository.

Erweiterungen für die RuntimebibliothekenExtensions to the runtime libraries

Die Bibliotheken für einige häufig verwendete Anwendungsfunktionen sind nicht in den Runtimebibliotheken enthalten, werden jedoch in NuGet-Paketen wie den folgenden bereitgestellt:Libraries for some commonly used application functionality aren't included in the runtime libraries but are made available in NuGet packages, such as the following:

NuGet-PaketNuGet package DokumentationDocumentation
Microsoft.Extensions.HostingMicrosoft.Extensions.Hosting Verwaltung der Anwendungslebensdauer (generischer Host)Application lifetime management (Generic Host)
Microsoft.Extensions.DependencyInjectionMicrosoft.Extensions.DependencyInjection AbhängigkeitsinjektionDependency injection (DI)
Microsoft.Extensions.ConfigurationMicrosoft.Extensions.Configuration ConfigurationConfiguration
Microsoft.Extensions.LoggingMicrosoft.Extensions.Logging LoggingLogging
Microsoft.Extensions.OptionsMicrosoft.Extensions.Options OptionenmusterOptions pattern

Weitere Informationen finden Sie im GitHub-Repository „dotnet/extensions“For more information, see the dotnet/extensions repository on GitHub.

DatenzugriffData access

.NET bietet einen objektrelationalen Mapper (ORM) und eine Möglichkeit zum Schreiben von SQL-Abfragen in Code..NET provides an Object/Relational Mapper (ORM) and a way to write SQL queries in code.

Entity Framework CoreEntity Framework Core

Entity Framework Core (EF Core) ist eine Open-Source- und plattformübergreifende Datenzugriffstechnologie, die als ORM fungieren kann.Entity Framework (EF) Core is an open source and cross-platform data-access technology that can serve as an ORM. Mit EF Core können Sie mit einer Datenbank arbeiten, indem Sie auf .NET-Objekte im Code verweisen.EF Core lets you work with a database by referring to .NET objects in code. Dadurch wird die Menge des Datenzugriffscodes reduziert, den Sie andernfalls schreiben und testen müssen.It reduces the amount of data-access code you would otherwise need to write and test. EF Core unterstützt viele Datenbank-Engines.EF Core supports many database engines.

Weitere Informationen finden Sie unter Entity Framework Core und Datenbankanbieter.For more information, see Entity Framework Core and Database Providers.

LINQLINQ

Language Integrated Query (LINQ) ermöglicht das Schreiben von deklarativem Code zum Arbeiten mit Daten.Language-integrated query (LINQ) lets you write declarative code for operating on data. Die Daten können in vielfältiger Form vorliegen (als In-Memory-Objekte, in einer SQL-Datenbank oder in einem XML-Dokument), aber der LINQ-Code weicht in der Regel nicht für die verschiedenen Datenquellen ab.The data can be in many forms (such as in-memory objects, a SQL database, or an XML document), but the LINQ code you write typically doesn't differ by data source.

Weitere Informationen finden Sie unter Übersicht über LINQ.For more information, see LINQ (Language Integrated Query) overview.

.NET-Terminologie.NET terminology

Es kann hilfreich sein, zu wissen, wie sich die Nutzung einiger Begriffe im Laufe der Zeit geändert hat, um die .NET-Dokumentation zu verstehen.To understand .NET documentation, it can help to know how the usage of some terms has changed over time.

.NET Core und .NET 5.NET Core and .NET 5

Microsoft veröffentlichte im Jahr 2002 mit .NET Framework eine Entwicklungsplattform zum Erstellen von Windows-Apps.In 2002, Microsoft released .NET Framework, a development platform for creating Windows apps. Heute steht Version 4.8 von .NET Framework zur Verfügung, die noch immer von Microsoft unterstützt wird.Today .NET Framework is at version 4.8 and is still supported by Microsoft.

Microsoft begann 2014, einen plattformübergreifenden Open-Source-Nachfolger für .NET Framework zu schreiben.In 2014, Microsoft began writing a cross-platform, open-source successor to .NET Framework. Diese neue Implementierung von .NET hieß .NET Core, bis Version 3.1 erreicht wurde.This new implementation of .NET was named .NET Core until it reached version 3.1. Die nächste Version nach .NET Core 3.1 ist .NET 5.0, die sich derzeit in der Vorschau befindet.The next version after .NET Core 3.1 is .NET 5.0, which is currently in preview. Die Versionsnummer „4“ wurde übersprungen, um Verwechslungen zwischen dieser Implementierung von .NET und .NET Framework 4.8 zu vermeiden.Version number 4 was skipped to avoid confusion between this implementation of .NET and .NET Framework 4.8. Die Bezeichnung „Core“ wurde weggelassen, um deutlich zu machen, dass dies nun die Hauptimplementierung von .NET ist.The name "Core" was dropped to make clear that this is now the main implementation of .NET.

In diesem Artikel geht es um .NET 5, aber ein Großteil der Dokumentation für .NET 5 enthält immer noch Verweise auf .NET Core oder .NET Framework.This article is about .NET 5, but much of the documentation for .NET 5 still has references to ".NET Core" or ".NET Framework". Außerdem wird die Bezeichnung „Core“ weiterhin in den Namen ASP.NET Core und Entity Framework Core verwendet.In addition, "Core" remains in the names ASP.NET Core and Entity Framework Core.

Die Dokumentation bezieht sich auch auf .NET Standard.The documentation also refers to .NET Standard. .NET Standard ist eine API-Spezifikation, mit der Sie Klassenbibliotheken für mehrere Implementierungen von .NET entwickeln können..NET Standard is an API specification that lets you develop class libraries for multiple implementations of .NET.

Weitere Informationen finden Sie unter .NET-Architekturkomponenten.For more information, see .NET architectural components.

Überladene BegriffeOverloaded terms

Einige der Begriffe für .NET können verwirrend sein, da dasselbe Wort in verschiedenen Kontexten auf unterschiedliche Weise verwendet wird.Some of the terminology for .NET can be confusing because the same word is used in different ways in different contexts. Dies sind einige der wichtigsten Instanzen:Here are a few of the more prominent instances:

  • Laufzeitruntime

    KontextContext Bedeutung von „Runtime“"runtime" meaning
    Common Language Runtime (CLR)Common Language Runtime (CLR) Die Ausführungsumgebung eines verwalteten Programms.The execution environment for a managed program. Das Betriebssystem ist Teil der Runtimeumgebung, gehört jedoch nicht zur .NET-Runtime.The OS is part of the runtime environment but isn't part of the .NET runtime.
    .NET-Runtime auf der .NET-Downloadseite.NET runtime on the .NET download page Dies sind die CLR und Runtimebibliotheken, die zusammen Unterstützung für das Ausführen von frameworkabhängigen Apps bieten.The CLR and runtime libraries, which together provide support for running framework-dependent apps. Die Seite bietet auch Runtimeoptionen für ASP.NET Core-Server-Apps und Windows-Desktop-Apps.The page also offers runtime choices for ASP.NET Core server apps and Windows desktop apps.
    Runtimebezeichner (RID)Runtime Identifier (RID) Dies ist die Betriebssystemplattform und CPU-Architektur, auf der eine .NET-App ausgeführt wird.The OS platform and CPU architecture that a .NET app runs on. Zum Beispiel: Windows x64 und Linux x64For example: Windows x64, Linux x64.
  • Frameworkframework

    KontextContext Bedeutung von „Framework“"framework" meaning
    .NET Framework.NET Framework Dies ist die ursprüngliche Implementierung von .NET für Windows.The original, Windows-only implementation of .NET. „Framework“ wird großgeschrieben."Framework" is capitalized.
    Zielframeworktarget framework Die Sammlung von APIs, auf der eine .NET-App oder -Bibliothek basiert.The collection of APIs that a .NET app or library relies on. Beispiele: .NET Core 3.1 und .NET Standard 2.0Examples: .NET Core 3.1, .NET Standard 2.0
    Zielframeworkmoniker (Target Framework Moniker, TFM)Target Framework Moniker (TFM) Ein Zielframeworkmoniker (TFM) ist ein standardisiertes Tokenformat zum Angeben des Zielframeworks einer .NET-App oder -Bibliothek.A TFM is a standardized token format for specifying the target framework of a .NET app or library. Beispiel: net462 für .NET Framework 4.6.2Example: net462 for .NET Framework 4.6.2.
    Frameworkabhängige Appframework-dependent app Dies ist eine App, die nur auf einem Computer ausgeführt werden kann, auf dem Sie die Runtime von der .NET-Downloadseite installiert haben.An app that can only run on a machine where you've installed the runtime from the .NET download page. „Framework“ ist in dieser Verwendung dasselbe wie „Runtime“, die Sie von der .NET-Downloadseite herunterladen."Framework" in this usage is the same thing as the "runtime" that you download from the .NET download page.
    Frameworkbibliothekenframework libraries Dies wird manchmal als Synonym für Runtimebibliotheken verwendet.Sometimes used as a synonym for runtime libraries.
  • SDKSDK

    KontextContext Bedeutung von „SDK“"SDK" meaning
    SDK auf der .NET-DownloadseiteSDK on the .NET download page Dies ist eine Sammlung von Tools und Bibliotheken, die Sie herunterladen und installieren, um .NET-Apps zu entwickeln und auszuführen.A collection of tools and libraries that you download and install to develop and run .NET apps. Dabei sind die CLI, MSBuild, die .NET-Runtime und andere Komponenten enthalten.Includes the CLI, MSBuild, the .NET runtime, and other components.
    Projekt im SDK-FormatSDK-style project Dies sind mehrere MSBuild-Ziele und -Aufgaben, die angeben, wie ein Projekt für einen bestimmten App-Typ erstellt wird.A set of MSBuild targets and tasks that specifies how to build a project for a particular app type. Das SDK wird in diesem Sinne mithilfe des Sdk-Attibuts des Project-Elements in einer Projektdatei angegeben.The SDK in this sense is specified by using the Sdk attribute of the Project element in a project file.
  • platformplatform

    KontextContext Bedeutung von „Plattform“"platform" meaning
    Plattformübergreifendcross platform „Plattform“ steht in diesem Fall für ein Betriebssystem und die Hardware, auf dem bzw. der die Ausführung erfolgt (z. B. Windows, macOS, Linux, iOS und Android).In this term, "platform" means an operating system and the hardware it runs on, such as Windows, macOS, Linux, iOS, and Android.
    .NET-Plattform.NET platform Die Verwendung variiert.Usage varies. Der Verweis kann auf eine Implementierung von .NET (z. B. .NET Framework oder .NET 5) oder ein übergeordnetes Konzept von .NET einschließlich aller Implementierungen erfolgen.The reference may be to one implementation of .NET (such as .NET Framework or .NET 5) or to an overarching concept of .NET including all implementations.

Weitere Informationen zur .NET-Terminologie finden Sie im .NET-Glossar.For more information about .NET terminology, see the .NET glossary.

Erweiterte SzenarienAdvanced scenarios

In den folgenden Abschnitten werden einige Funktionen von .NET erläutert, die in erweiterten Szenarios nützlich sind.The following sections explain some capabilities of .NET that are useful in advanced scenarios.

Native InteroperabilitätNative interop

Jedes Betriebssystem umfasst eine Anwendungsprogrammierschnittstelle (Application Programming Interface, API), die Systemdienste bereitstellt.Every operating system includes an application programming interface (API) that provides system services. In .NET gibt es verschiedene Möglichkeiten, diese APIs aufzurufen..NET provides several ways to call those APIs.

Die wichtigste Methode für die Interoperabilität mit nativen APIs ist ein „Plattformaufruf“ (kurz: P/Invoke).The main way to interoperate with native APIs is via "platform invoke" or P/Invoke for short. P/Invoke wird auf Linux- und Windows-Plattformen unterstützt.P/Invoke is supported across Linux and Windows platforms. Eine nur für Windows verfügbare Methode für die Interoperabilität wird als „COM-Interop“ bezeichnet, die im Zusammenhang mit COM-Komponenten in verwaltetem Code funktioniert.A Windows-only way of interoperating is known as "COM interop," which works with COM components in managed code. Die Methode basiert auf der P/Invoke-Infrastruktur, funktioniert jedoch etwas anders.It's built on top of the P/Invoke infrastructure, but it works in subtly different ways.

Weitere Informationen finden Sie unter Native Interoperabilität.For more information, see Native interoperability.

Unsicherer CodeUnsafe code

Je nach Sprachunterstützung können Sie mit der CLR auf nativen Speicher zugreifen und Zeigerarithmetik über unsafe-Code ausführen.Depending on language support, the CLR lets you access native memory and do pointer arithmetic via unsafe code. Diese Vorgänge werden für bestimmte Algorithmen sowie für die Systeminteroperabilität benötigt.These operations are needed for certain algorithms and system interoperability. Unsicherer Code ist zwar leistungsstark, aber von seiner Verwendung wird abgeraten, sofern er nicht für die Interoperabilität mit System-APIs oder zur Implementierung des effizientesten Algorithmus erforderlich ist.Although powerful, use of unsafe code is discouraged unless it's necessary to interoperate with system APIs or implement the most efficient algorithm. Unsicherer Code wird in verschiedenen Umgebungen möglicherweise unterschiedlich ausgeführt und bietet weder die Vorteile des Garbage Collectors noch Typsicherheit.Unsafe code may not execute the same way in different environments and also loses the benefits of a garbage collector and type safety. Es wird empfohlen, die Verwendung von unsicherem Code so weit wie möglich einzugrenzen und den Code sehr gründlich zu testen.It's recommended to confine and centralize unsafe code as much as possible and test that code thoroughly.

Weitere Informationen finden Sie unter Unsicherer Code und Zeiger (C#-Programmierhandbuch).For more information, see Unsafe code and pointers.

Nächste SchritteNext steps