Leitfaden für .NET Core.NET Core Guide

Sehen Sie sich die Einsteigertutorials an. Dort erfahren Sie, wie Sie eine einfache .NET Core-Anwendung erstellen.Check out the "Getting Started" tutorials to learn how to create a simple .NET Core application. Es dauert nur wenige Minuten, bis Ihre erste App einsatzbereit ist.It only takes a few minutes to get your first app up and running.

.NET Core ist eine universelle Entwicklungsplattform, die von Microsoft und der .NET-Community auf GitHub gepflegt wird..NET Core is a general purpose development platform maintained by Microsoft and the .NET community on GitHub. Sie ist plattformübergreifend, d.h., sie unterstützt Windows, macOS und Linux und kann lokal, in der Cloud und in Einbettungs- und IoT-Szenarios verwendet werden.It is cross-platform, supporting Windows, macOS and Linux, and can be used in device, cloud, and embedded/IoT scenarios.

Die folgenden Merkmale definieren .NET Core am besten:The following characteristics best define .NET Core:

  • Flexible Bereitstellung: Kann in Ihre App eingebunden oder parallel zu ihr installiert werden – auf Benutzer- oder Computerbasis.Flexible deployment: Can be included in your app or installed side-by-side user- or machine-wide.
  • Plattformübergreifend: Ist unter Windows, macOS und Linux lauffähig und kann auf andere Betriebssystemen portiert werden.Cross-platform: Runs on Windows, macOS and Linux; can be ported to other operating systems. Die Bandbreite unterstützter Betriebssysteme, CPUs und Anwendungsszenarios wird sich im Laufe der Zeit erweitern. Die Bereitstellung erfolgt dabei durch Microsoft, weitere Unternehmen oder Einzelpersonen.The supported Operating Systems (OS), CPUs and application scenarios will grow over time, provided by Microsoft, other companies, and individuals.
  • Befehlszeilen-Tools: Alle Produktszenarios können auf der Befehlszeile geübt werden.Command-line tools: All product scenarios can be exercised at the command-line.
  • Kompatibel: .NET Core ist über die .NET Standardbibliothek mit .NET Framework, Xamarin und Mono kompatibel.Compatible: .NET Core is compatible with .NET Framework, Xamarin and Mono, via the .NET Standard.
  • Open Source: Die .NET Core-Plattform ist eine Open Source-Plattform, die MIT- und Apache 2-Lizenzen verwendet.Open source: The .NET Core platform is open source, using MIT and Apache 2 licenses. Dokumentation ist lizenziert unter CC-BY.Documentation is licensed under CC-BY. .NET Core ist ein .NET Foundation-Projekt..NET Core is a .NET Foundation project.
  • Von Microsoft unterstützt: .NET Core wird per .NET Core-Unterstützung von Microsoft unterstütztSupported by Microsoft: .NET Core is supported by Microsoft, per .NET Core Support

AufbauComposition

.NET Core umfasst folgende Bestandteile:.NET Core is composed of the following parts:

  • Eine .NET-Laufzeit, die ein Typsystem, eine Funktion zum Laden von Assemblys, einen Garbage Collector, natives Interop und andere grundlegende Dienste bereitstellt.A .NET runtime, which provides a type system, assembly loading, a garbage collector, native interop and other basic services.
  • Verschiedene Frameworkbibliotheken, die primitive Datentypen, Typen zur Anwendungsgestaltung und grundlegende Hilfsprogramme bereitstellen.A set of framework libraries, which provide primitive data types, app composition types and fundamental utilities.
  • Eine Anzahl SDK-Tools und Sprachcompiler, zur Implementierung der grundlegenden Entwicklungsfunktionen über das .NET Core SDK.A set of SDK tools and language compilers that enable the base developer experience, available in the .NET Core SDK.
  • Der „Dotnet“-App-Host, der zum Starten von .NET Core-Anwendungen verwendet wird.The 'dotnet' app host, which is used to launch .NET Core apps. Er wählt und hostet die Laufzeit, stellt eine Richtlinie zum Laden der Assembly bereit und startet die Anwendung.It selects the runtime and hosts the runtime, provides an assembly loading policy and launches the app. Der gleiche Host startet auch SDK-Tools auf die gleiche Weise.The same host is also used to launch SDK tools in much the same way.

SprachenLanguages

C#-, Visual Basic- und F#-Sprachen können verwendet werden, um Anwendungen und Bibliotheken für .NET Core zu schreiben.The C#, Visual Basic, and F# languages can be used to write applications and libraries for .NET Core. Die Compiler werden auf .NET Core ausgeführt, und ermöglichen es Ihnen, .NET Core dort zu entwickeln, wo es ausgeführt wird.The compilers run on .NET Core, enabling you to develop for .NET Core anywhere it runs. In der Regel verwenden Sie die Compiler nicht direkt, sondern indirekt durch die SDK-Tools.In general, you will not use the compilers directly, but indirectly using the SDK tools.

Die C#-, Visual Basic- und F#-Compiler und die .NET Core-Tools sind integriert bzw. können in mehrere Text-Editoren und IDEs, einschließlich Visual Studio, Visual Studio Code, Sublime Text und Vim integriert werden. .NET Core ist somit eine Option in Ihrer bevorzugten Programmierumgebung und im Betriebssystem.The C#, Visual Basic, and F# compilers and the .NET Core tools are or can be integrated into several text editors and IDEs, including Visual Studio, Visual Studio Code, Sublime Text and Vim, making .NET Core development an option in your favorite coding environment and OS. Diese Integration wird teilweise von den Leuten vom OmniSharp-Projekt bereitgestellt.This integration is provided, in part, by the good folks of the OmniSharp project.

.NET-APIs und Kompatibilität.NET APIs and Compatibility

.NET Core kann als plattformübergreifende Version von .NET Framework, auf der Ebene der .NET Framework Base Class Libraries (BCL) angesehen werden..NET Core can be thought of as a cross-platform version of the .NET Framework, at the layer of the .NET Framework Base Class Libraries (BCL). Es implementiert die .NET-Standard-Spezifikation.It implements the .NET Standard specification. .NET Core bietet eine Teilmenge der APIs, die im .NET Framework oder in Mono/Xamarin verfügbar sind..NET Core provides a subset of the APIs that are available in the .NET Framework or Mono/Xamarin. In einigen Fällen sind die Typen nicht vollständig implementiert (einige Mitglieder sind nicht verfügbar oder wurden verschoben).In some cases, types are not fully implemented (some members are not available or have been moved).

Sehen Sie sich die .NET Core Roadmap an, um mehr über die .NET Core-API-Roadmap zu erfahren.Look at the .NET Core roadmap to learn more about the .NET Core API roadmap.

Beziehung zu .NET-StandardRelationship to .NET Standard

.NET-Standard ist eine API-Spezifikation, die den konsistenten Satz von .NET-APIs beschreibt, die Entwickler in jeder .NET-Implementierung erwarten können.The .NET Standard is an API spec that describes the consistent set of .NET APIs that developers can expect in each .NET implementation. .NET-Implementierungen müssen diese Spezifikationen implementieren, um als konform mit .NET-Standard eingestuft zu werden und Bibliotheken zu unterstützen, die auf .NET-Standard abzielen..NET implementations need to implement this spec in order to be considered .NET Standard-compliant and to support libraries that target .NET Standard.

.NET Core implementiert .NET-Standard und unterstützt daher .NET-Standardbibliotheken..NET Core implements .NET Standard, and therefore supports .NET Standard libraries.

ArbeitslastenWorkloads

.NET Core selbst beinhaltet ein einziges Anwendungsmodell ‒ Konsolenanwendungen ‒ die für Tools, lokale Dienste und textbasierte Spiele nützlich sind.By itself, .NET Core includes a single application model -- console apps -- which is useful for tools, local services and text-based games. Weitere Anwendungsmodelle wurden zusätzlich zu .NET Core erstellt, um die Funktionalitäten zu erweitern, z.B.:Additional application models have been built on top of .NET Core to extend its functionality, such as:

Open SourceOpen Source

.NET Core ist Open Source (MIT-Lizenz) und wurde von Microsoft im Jahr 2014 zur .NET Foundation hinzugefügt..NET Core is open source (MIT license) and was contributed to the .NET Foundation by Microsoft in 2014. Es ist jetzt eines der aktivsten .NET-Foundation-Projekte.It is now one of the most active .NET Foundation projects. Es kann kostenlos von Einzelpersonen und Unternehmen, einschließlich persönlicher, wissenschaftlicher oder kommerzieller Zwecke übernommen werden.It can be freely adopted by individuals and companies, including for personal, academic or commercial purposes. Mehrere Unternehmen verwenden .NET Core als Teil von Anwendungen, Tools, neuen Plattformen und Hostingdiensten.Multiple companies use .NET Core as part of apps, tools, new platforms and hosting services. Einige dieser Unternehmen leisten auf GitHub bedeutende Beiträge zu .NET Core, und bieten eine Anleitung für die Produktentwicklung als Teil der .NET Foundation Technical Steering Group (Technische Steuerungsgruppe).Some of these companies make significant contributions to .NET Core on GitHub and provide guidance on the product direction as part of the .NET Foundation Technical Steering Group.

ErwerbAcquisition

.NET Core wird auf zwei Arten verteilt: als Pakete auf NuGet.org und als eigenständige Verteilungen..NET Core is distributed in two main ways, as packages on NuGet.org and as standalone distributions.

VerteilungenDistributions

Sie können .NET Core auf der Seite .NET Core Erste Schritte herunterladen.You can download .NET Core at the .NET Core Getting Started page.

  • Die Verteilung Microsoft .NET Core enthält die CoreCLR-Runtime, zugehörige Bibliotheken, einen Konsolenanwendungshost und den Anwendungsstarter dotnet.The Microsoft .NET Core distribution includes the CoreCLR runtime, associated libraries, a console application host and the dotnet app launcher. Sie wird durch die Microsoft.NETCore.App-Metapakete beschrieben.It is described by the Microsoft.NETCore.App metapackage.
  • Die Verteilung Microsoft .NET Core SDK enthält .NET Core und eine Reihe von Tools zum Wiederherstellen von NuGet-Paketen und Kompilieren und Erstellen von Anwendungen.The Microsoft .NET Core SDK distribution includes .NET Core and a set of tools for restoring NuGet packages and compiling and building apps.

In der Regel installieren Sie zunächst .NET Core SDK und beginnen dann mit der .NET Core-Entwicklung.Typically, you will first install the .NET Core SDK to get started with .NET Core development. Sie können zusätzliche .NET Core-Builds (möglicherweise in der Vorabversion) installieren.You may choose to install additional .NET Core (perhaps pre-release) builds.

PaketePackages

  • .NET Core-Pakete enthalten die .NET Core Runtime und -Bibliotheken (Verweisassemblys und Implementierungen)..NET Core Packages contain the .NET Core runtime and libraries (reference assemblies and implementations). Beispielsweise System.Net.Http.For example, System.Net.Http.
  • .NET Core-Metapakete beschreiben verschiedene Ebenen und Anwendungsmodelle, indem sie auf die entsprechenden versionsspezifischen Bibliothekspakete verweisen..NET Core Metapackages describe various layers and app-models by referencing the appropriate set of versioned library packages.

ArchitekturArchitecture

.NET Core ist eine plattformübergreifende .NET-Implementierung..NET Core is a cross-platform .NET implementation. Die primären, für .NET Core einzigartigen architektonischen Fragen beziehen sich auf die Erstellung von plattformspezifischen Implementierungen für unterstützte Plattformen.The primary architectural concerns unique to .NET Core are related to providing platform-specific implementations for supported platforms.

UmgebungenEnvironments

.NET Core wird von Microsoft auf Windows, Mac OS und Linux unterstützt..NET Core is supported by Microsoft on Windows, macOS and Linux. Auf Linux unterstützt Microsoft hauptsächlich .NET Core, das auf Red Hat Enterprise Linux (RHEL) und Debian Distributionsfamilien ausgeführt wird.On Linux, Microsoft primarily supports .NET Core running on Red Hat Enterprise Linux (RHEL) and Debian distribution families.

.NET Core unterstützt derzeit X64 CPUs..NET Core currently supports X64 CPUs. Auf Windows wird X86 ebenfalls unterstützt.On Windows, X86 is also supported. ARM64 und ARM32 werden durchgeführt.ARM64 and ARM32 are in progress.

Die .NET Core Roadmap enthält ausführlichere Informationen zur Arbeitsauslastung, CPU-Umgebung, zum Betriebssystem und zu Plänen.The .NET Core Roadmap provides more detailed information on workload and OS and CPU environment support and plans.

Andere Gruppen oder Unternehmen unterstützen .NET Core möglicherweise für andere Anwendungstypen und Anwendungsumgebungen.Other companies or groups may support .NET Core for other app types and environment.

Für Anpassungsfähigkeit entworfenDesigned for Adaptability

.NET Core wurde als sehr ähnliches, aber auch einzigartiges Produkt im Vergleich zu anderen .NET-Produkten erstellt..NET Core has been built as a very similar but unique product relative to other .NET products. Es wurde entwickelt, um umfassende Anpassungsfähigkeit auf neuen Plattformen zu aktivieren, für neue Arbeitsbelastungen und mit neuen Compiler-Toolchains.It has been designed to enable broad adaptability to new platforms, for new workloads and with new compiler toolchains. Es verfügt über mehrere Betriebssysteme und CPU-Ports und kann an vielen anderen portiert werden.It has several OS and CPU ports in progress and may be ported to many more. Ein Beispiel ist das LLILC-Projekt, das ein früher Prototyp systeminterner Kompilierung für .NET Core über die LLVM-Compiler ist.An example is the LLILC project, which is an early prototype of native compilation for .NET Core via the LLVM compiler.

Das Produkt wird in mehrere Stücke aufgeteilt, und die verschiedenen Teile können an neue Plattformen auf unterschiedlichen Zeitplänen angepasst werden.The product is broken into several pieces, enabling the various parts to be adapted to new platforms on different schedules. Die Laufzeit und grundlegende plattformspezifische Bibliotheken müssen als eine Einheit portiert werden.The runtime and platform-specific foundational libraries must be ported as a unit. Plattformagnostische Bibliotheken sollten wie vorhanden von der Konstruktion auf allen Plattformen funktionieren.Platform-agnostic libraries should work as-is on all platforms, by construction. Es gibt eine Projektverschiebung zur Verminderung der plattformspezifischen Implementierungen, um die Effizienz der Entwickler zu erhöhen. Wenn ein Algorithmus oder API so vollständig oder teilweise implementiert werden kann, wird ein plattformneutraler C#-Code bevorzugt.There is a project bias to reducing platform-specific implementations to increase developer efficiency, preferring platform-neutral C# code whenever an algorithm or API can be implemented in-full or in-part that way.

Häufig wird die Frage gestellt, wie .NET Core so implementiert wird, dass mehrere Betriebssysteme unterstützt werden können.People commonly ask how .NET Core is implemented in order to support multiple operating systems. Dabei wird meistens gefragt, ob es separate Implementierungen gibt oder die bedingte Kompilierung verwendet wird.They typically ask if there are separate implementations or if conditional compilation is used. Die Antwort lautet: Beide Ansätze werden eingesetzt, aber der Schwerpunkt liegt eindeutig auf der bedingten Kompilierung.It's both, with a strong bias towards conditional compilation.

Sie sehen im Diagramm unten, dass die große Mehrheit der CoreFX aus plattformneutralem Code sind, der auf allen Plattformen gemeinsam genutzt wird.You can see in the chart below that the vast majority of CoreFX is platform-neutral code that is shared across all platforms. Ein plattformneutraler Code kann als einzelne, tragbare Assembly implementiert werden, die auf allen Plattformen verwendet wird.Platform-neutral code can be implemented as a single portable assembly that is used on all platforms.

CoreFX: Zeilen-Code pro Plattform

Windows- und Unix-Implementierungen haben eine ähnliche Größe.Windows and Unix implementations are similar in size. Windows verfügt über eine größere Implementierung, da CoreFX einige Funktionen nur für Windows implementiert, wie z.B. Microsoft.Win32.Registry, jedoch noch keine Konzepte nur für Unix implementiert.Windows has a larger implementation since CoreFX implements some Windows-only features, such as Microsoft.Win32.Registry but does not yet implement any Unix-only concepts. Außerdem sehen Sie, dass die Mehrheit der Linux- und Mac OS-Implementierungen für mehrere Unix-Implementierungen verwendet werden, während die spezifischen Linux- und Mac OS-Implementierungen ungefähr gleich groß sind.You will also see that the majority of the Linux and macOS implementations are shared across a Unix implementation, while the Linux- and macOS-specific implementations are roughly similar in size.

Es gibt eine Mischung aus plattformspezifischen und plattformneutralen Bibliotheken in .NET Core.There are a mix of platform-specific and platform-neutral libraries in .NET Core. Sie können das Muster in einigen Beispielen sehen:You can see the pattern in a few examples:

Vergleiche mit anderen .NET- ImplementierungenComparisons to other .NET implementations

Möglicherweise ist es am einfachsten, die Größe und Form von .NET Core durch einen Vergleich mit vorhandenen .NET-Implementierungen zu verstehen.It is perhaps easiest to understand the size and shape of .NET Core by comparing it to existing .NET implementations.

Vergleich mit .NET- FrameworkComparison with .NET Framework

.NET wurde erstmals in 2000 von Microsoft angekündigt, und hat sich dann von dort aus entwickelt..NET was first announced by Microsoft in 2000 and then evolved from there. Das .NET Framework war in den 15 Jahren und mehr seither die primäre .NET-Implementierung von Microsoft.The .NET Framework has been the primary .NET implementation produced by Microsoft during that 15+ year span.

Die Hauptunterschiede zwischen .NET Core und dem .NET Framework:The major differences between .NET Core and the .NET Framework:

  • Anwendungsmodelle: .NET Core unterstützt nicht alle Anwendungsmodelle für .NET Framework. Teilweise liegt das daran, da viele von ihnen auf Windows-Technologien, wie z.B. WPF (basierend auf DirectX) erstellt werden.App-models -- .NET Core does not support all the .NET Framework app-models, in part because many of them are built on Windows technologies, such as WPF (built on top of DirectX). Die Konsole und ASP.NET Core-Anwendungsmodelle werden von .NET Core und .NET Framework unterstützt.The console and ASP.NET Core app-models are supported by both .NET Core and .NET Framework.
  • APIs: .NET Core enthält viele der gleichen, aber weniger APIs als .NET Framework und mit einer anderen Verarbeitung (Assemblynamen sind unterschiedlich; Typform unterscheidet sich in wichtigen Fällen).APIs -- .NET Core contains many of the same, but fewer, APIs as the .NET Framework, and with a different factoring (assembly names are different; type shape differs in key cases). Diese Unterschiede erfordern derzeit in der Regel Änderungen der Portquelle von .NET Core.These differences currently typically require changes to port source to .NET Core. .NET Core implementiert die .NET-Standard-API, die ausgeweitet wird, um mit der Zeit mehr BCL-API von .NET Framework zu enthalten..NET Core implements the .NET Standard API, which will grow to include more of the .NET Framework BCL API over time.
  • Subsysteme: .NET Core implementiert eine Teilmenge der Subsysteme in .NET Framework, mit dem Ziel einer einfacheren Implementierung und einem einfacheren Programmiermodell.Subsystems -- .NET Core implements a subset of the subsystems in the .NET Framework, with the goal of a simpler implementation and programming model. Code Access Security (CAS) wird z.B. nicht unterstützt, während Reflektion unterstützt wird.For example, Code Access Security (CAS) is not supported, while reflection is supported.
  • Plattformen: .NET Framework unterstützt Windows und Windows-Server- während .NET Core auch Mac OS und Linux unterstützt.Platforms -- The .NET Framework supports Windows and Windows Server while .NET Core also supports macOS and Linux.
  • Open Source: .NET Core ist Open Source, während eine schreibgeschützte Teilmenge von .NET Framework Open Source ist.Open Source -- .NET Core is open source, while a read-only subset of the .NET Framework is open source.

Während .NET Core einzigartig ist und sich erheblich von .NET Framework und anderen .NET-Implementierungen unterscheidet, ist es einfach, Code entweder mit der Quell. oder Binärdatei- Freigabeverfahren freizugeben.While .NET Core is unique and has significant differences to the .NET Framework and other .NET implementations, it is straightforward to share code, using either source or binary sharing techniques.

Vergleich mit MonoComparison with Mono

Mono ist die ursprüngliche plattformübergreifende und Open Source .NET-Implementierung, die erstmals im Jahr 2004 versendet wurde.Mono is the original cross-platform and open source .NET implementation, first shipping in 2004. Sie kann als Community-Klon des .NET Frameworks betrachtet werden.It can be thought of as a community clone of the .NET Framework. Das Mono-Projektteam griff auf die offenen .NET-Standards (insbesondere ECMA 335) zurück, die von Microsoft veröffentlicht wurden, um eine kompatible Implementierung bereitzustellen.The Mono project team relied on the open .NET standards (notably ECMA 335) published by Microsoft in order to provide a compatible implementation.

Die Hauptunterschiede zwischen .NET Core und Mono:The major differences between .NET Core and Mono:

  • Anwendungsmodelle: Mono unterstützt eine Teilmenge der .NET Framework-Anwendungsmodelle (z.B. Windows Forms) und einige zusätzliche (z.B. Xamarin.iOS) über das Xamarin-Produkt.App-models -- Mono supports a subset of the .NET Framework app-models (for example, Windows Forms) and some additional ones (for example, Xamarin.iOS) through the Xamarin product. .NET Core unterstützt diese nicht..NET Core doesn't support these.
  • APIs: Mono unterstützt eine große Teilmenge der .NET Framework-APIs, die die gleichen Assemblynamen und Fakturierung verwenden.APIs -- Mono supports a large subset of the .NET Framework APIs, using the same assembly names and factoring.
  • Plattformen: Mono unterstützt zahlreiche Plattformen und CPUs.Platforms -- Mono supports many platforms and CPUs.
  • Open Source: Mono und .NET Core verwenden beide die MIT-Lizenz und sind .NET Foundation-Projekte.Open Source -- Mono and .NET Core both use the MIT license and are .NET Foundation projects.
  • Fokus: Der primäre Fokus von Mono in den letzten Jahren waren die mobilen Plattformen, während sich .NET Core auf Cloud-Arbeitslasten konzentriert.Focus -- The primary focus of Mono in recent years is mobile platforms, while .NET Core is focused on cloud workloads.