.NET Core Anwendungsbereitstellung.NET Core application deployment

Sie können drei Arten von Bereitstellungen für .NET Core-Anwendungen erstellen:You can create three types of deployments for .NET Core applications:

  • Framework-abhängige Bereitstellung.Framework-dependent deployment. Wie der Name schon sagt, benötigt eine Framework-abhängige Bereitstellung (Framework-Dependent Deployment, FDD) eine gemeinsame systemweite Version von .NET Core auf dem Zielsystem.As the name implies, framework-dependent deployment (FDD) relies on the presence of a shared system-wide version of .NET Core on the target system. Da .NET Core bereits vorhanden ist, ist Ihre Anwendung auch zwischen .NET Core-Installationen übertragbar.Because .NET Core is already present, your app is also portable between installations of .NET Core. Ihre Anwendung enthält nur ihren eigenen Code und Drittanbieter-Abhängigkeiten, die außerhalb von .NET Core-Bibliotheken bestehen.Your app contains only its own code and any third-party dependencies that are outside of the .NET Core libraries. FDDs enthalten DLL-Dateien, die mithilfe des dotnet-Hilfsprogramms über die Befehlszeile gestartet werden können.FDDs contain .dll files that can be launched by using the dotnet utility from the command line. dotnet app.dll führt z.B. eine Anwendung namens app aus.For example, dotnet app.dll runs an application named app.

  • Eigenständige Bereitstellung.Self-contained deployment. Im Gegensatz zu FDD müssen bei einer eigenständigen Bereitstellung (Self-Contained Deployment, SCD) die freigegebenen Komponenten nicht auf dem Zielsystem vorhanden sein.Unlike FDD, a self-contained deployment (SCD) doesn't rely on the presence of shared components on the target system. Alle Komponenten, einschließlich .NET Core-Bibliotheken und .NET Core Runtime, sind in der Anwendung enthalten und von anderen .NET Core-Anwendungen isoliert.All components, including both the .NET Core libraries and the .NET Core runtime, are included with the application and are isolated from other .NET Core applications. SCDs enthalten eine ausführbare Datei (z.B. app.exe auf Windows-Plattformen für eine Anwendung namens app), die eine umbenannte Version des plattformspezifischen .NET Core-Hosts darstellt, und eine DLL-Datei (z.B. app.dll), bei der es sich um die eigentliche Anwendung handelt.SCDs include an executable (such as app.exe on Windows platforms for an application named app), which is a renamed version of the platform-specific .NET Core host, and a .dll file (such as app.dll), which is the actual application.

  • Framework-abhängige ausführbare Dateien.Framework-dependent executables. Hierbei wird eine ausführbare Datei erzeugt, die auf einer Zielplattform ausgeführt wird.Produces an executable that runs on a target platform. Ähnlich wie die FDDs sind Framework-abhängige ausführbare Dateien (Framework-Dependent Executables, FDEs) plattformspezifisch und stellen keine eigenständige Bereitstellung dar.Similar to FDDs, framework-dependent executables (FDE) are platform-specific and aren't self-contained. Diese Bereitstellungen hängen zur Ausführung weiterhin von dem Vorhandensein einer systemweiten Version von .NET Core ab.These deployments still rely on the presence of a shared system-wide version of .NET Core to run. Im Gegensatz zu einer SCD enthält Ihre App nur ihren eigenen Code und Drittanbieterabhängigkeiten, die außerhalb der .NET Core-Bibliotheken vorliegen.Unlike an SCD, your app only contains your code and any third-party dependencies that are outside of the .NET Core libraries. FDEs erzeugen eine ausführbare Datei, die auf der Zielplattform ausgeführt wird.FDEs produce an executable that runs on the target platform.

Framework-abhängige Bereitstellungen (FDD)Framework-dependent deployments (FDD)

Für eine FDD stellen Sie nur Ihre Anwendungen und Drittanbieter-Abhängigkeiten bereit.For an FDD, you deploy only your app and third-party dependencies. Ihre App verwendet die .NET Core- Version, die auf dem Zielsystem vorhanden ist.Your app will use the version of .NET Core that's present on the target system. Dies ist das Standardbereitstellungsmodell für .NET Core- und ASP.NET Core-Apps, die für .NET Core vorgesehen sind.This is the default deployment model for .NET Core and ASP.NET Core apps that target .NET Core.

Warum eine Framework-abhängige Bereitstellung erstellen?Why create a framework-dependent deployment?

Die Bereitstellung einer FDD hat eine Reihe von Vorteilen:Deploying an FDD has a number of advantages:

  • Sie müssen die Zielbetriebssysteme, auf denen Ihre .NET Core-Anwendung ausgeführt wird, nicht im Voraus definieren.You don't have to define the target operating systems that your .NET Core app will run on in advance. Da .NET Core unabhängig vom Betriebssystem ein gemeinsames PE-Dateiformat für ausführbare Dateien verwendet, kann .NET Core Ihrer Anwendung unabhängig vom zugrunde liegenden Betriebssystem ausführen.Because .NET Core uses a common PE file format for executables and libraries regardless of operating system, .NET Core can execute your app regardless of the underlying operating system. Weitere Informationen zum PE-Dateiformat finden Sie unter .NET Assembly-Dateiformat.For more information on the PE file format, see .NET Assembly File Format.

  • Ihr Bereitstellungspaket ist klein.The size of your deployment package is small. Sie müssen nur Ihre Anwendung und deren Abhängigkeiten bereitstellen, nicht .NET Core selbst.You only deploy your app and its dependencies, not .NET Core itself.

  • Sofern keine Außerkraftsetzung durchgeführt wird, verwenden FDDs die neueste gewartete Runtime, die auf dem Zielsystem installiert ist.Unless overridden, FDDs will use the latest serviced runtime installed on the target system. Auf diese Weise kann Ihre Anwendung die aktuelle gepatchte Version der .NET Core-Runtime nutzen.This allows your application to use the latest patched version of the .NET Core runtime.

  • Mehrere Anwendungen verwenden die gleiche .NET Core-Installation, die Speicherplatz und Arbeitsspeicher auf dem Hostsystem verringert.Multiple apps use the same .NET Core installation, which reduces both disk space and memory usage on host systems.

Es gibt auch einige Nachteile:There are also a few disadvantages:

  • Ihre App kann nur ausgeführt werden, wenn die anvisierte .NET Core-Version oder eine höhere Version bereits auf dem Hostsystem installiert ist.Your app can run only if the version of .NET Core your app targets, or a later version, is already installed on the host system.

  • Es ist möglich, dass die .NET Core Runtime und die Bibliotheken ohne Ihr Wissen in zukünftigen Versionen geändert werden.It's possible for the .NET Core runtime and libraries to change without your knowledge in future releases. In seltenen Fällen kann dies das Verhalten Ihrer Anwendung ändern.In rare cases, this may change the behavior of your app.

Eigenständige Bereitstellungen (Self-contained deployments, SCD)Self-contained deployments (SCD)

Bei einer eigenständigen Bereitstellung stellen Sie nicht nur Ihre Anwendung und alle erforderlichen Drittanbieterabhängigkeiten bereit, sondern auch die .NET Core-Version, mit der Sie Ihre Anwendung erstellt haben.For a self-contained deployment, you deploy your app and any required third-party dependencies along with the version of .NET Core that you used to build the app. Eine eigenständige Bereitstellung schließt allerdings nicht die nativen Abhängigkeiten von .NET Core auf verschiedenen Plattformen mit ein. Diese müssen daher vor dem Ausführen der Anwendung installiert werden.Creating an SCD doesn't include the native dependencies of .NET Core on various platforms, so these must be present before the app runs. Weitere Informationen zur Versionsbindung zur Laufzeit finden Sie im Artikel zur Versionsbindung in .NET Core.For more information on version binding at runtime, see the article on version binding in .NET Core.

Ab NET Core 2.1 SDK (Version 2.1.300) unterstützt .NET Core das Rollforward von Patchversionen.Starting with NET Core 2.1 SDK (version 2.1.300), .NET Core supports patch version roll forward. Bei Erstellung einer eigenständigen Bereitstellung enthalten .NET Core-Tools automatisch die neueste gewartete Runtime der .NET Core-Version, auf die die Anwendung ausgerichtet ist.When you create a self-contained deployment, .NET Core tools automatically include the latest serviced runtime of the .NET Core version that your application targets. (Die neueste gewartete Runtime enthält Sicherheitspatches und andere Fehlerbehebungen.) Die gewartete Runtime muss auf Ihrem Buildsystem nicht vorhanden sein; sie wird automatisch von NuGet.org heruntergeladen. Weitere Informationen, einschließlich Anweisungen zum Deaktivieren des Rollforwards von Patchversionen, finden Sie unter Rollforward der eigenständigen Runtimebereitstellung.(The latest serviced runtime includes security patches and other bug fixes.) The serviced runtime does not have to be present on your build system; it is downloaded automatically from NuGet.org. For more information, including instructions on how to opt out of patch version roll forward, see Self-contained deployment runtime roll forward.

Framework-abhängige Bereitstellungen (FDD) und eigenständige Bereitstellungen (SCD) verwenden getrennte ausführbare Hostdateien, sodass Sie eine ausführbare Hostdatei für eine SCD mit Ihrer Herausgebersignatur signieren können.FDD and SCD deployments use separate host executables, so you can sign a host executable for an SCD with your publisher signature.

Was spricht für eine eigenständige Bereitstellung?Why deploy a self-contained deployment?

Das Bereitstellen einer eigenständigen Bereitstellung hat zwei wesentliche Vorteile:Deploying a Self-contained deployment has two major advantages:

  • Sie haben die alleinige Kontrolle über die .NET Core-Version, die mit Ihrer Anwendung bereitgestellt wird.You have sole control of the version of .NET Core that is deployed with your app. .NET Core kann nur von Ihnen bearbeitet werden..NET Core can be serviced only by you.

  • Sie können sicher sein, dass das Zielsystem Ihre .NET Core-Anwendung ausführen kann, da Sie die .NET Core-Version bereitstellen, die darauf ausgeführt werden soll.You can be assured that the target system can run your .NET Core app, since you're providing the version of .NET Core that it will run on.

Es hat auch einige Nachteile:It also has a number of disadvantages:

  • Da .NET Core in Ihrem Bereitstellungspaket enthalten ist, müssen Sie die Zielplattformen auswählen, für die Sie im Voraus Bereitstellungspaketen erstellen.Because .NET Core is included in your deployment package, you must select the target platforms for which you build deployment packages in advance.

  • Die Größe Ihres Bereitstellungspakets ist relativ groß, da es auch .NET Core, Ihre Anwendung und ihre Drittanbieter-Abhängigkeiten enthält.The size of your deployment package is relatively large, since you have to include .NET Core as well as your app and its third-party dependencies.

    Ab .NET Core 2.0 können Sie die Größe Ihrer Bereitstellung auf Linux-Systemen um etwa 28 MB reduzieren, indem Sie den invarianten Globalisierungsmodus von .NET Core verwenden.Starting with .NET Core 2.0, you can reduce the size of your deployment on Linux systems by approximately 28 MB by using .NET Core globalization invariant mode. Normalerweise basiert die Globalisierungsunterstützung von .NET Core unter Linux auf den ICU-Bibliotheken.Ordinarily, .NET Core on Linux relies on the ICU libraries for globalization support. Im invarianten Modus werden die Bibliotheken nicht in die Bereitstellung einbezogen, und alle Kulturen verhalten sich wie die invariante Kultur.In invariant mode, the libraries are not included with your deployment, and all cultures behave like the invariant culture.

  • Das Bereitstellen von zahlreichen eigenständigen .NET Core-Anwendungen auf ein System kann viel Speicherplatz verbrauchen, da jede Anwendung .NET Core-Dateien dupliziert.Deploying numerous self-contained .NET Core apps to a system can consume significant amounts of disk space, since each app duplicates .NET Core files.

Framework-abhängige ausführbare Dateien (FDEs)Framework-dependent executables (FDE)

Ab .NET Core 2.2 können Sie Ihre App als FDE bereitstellen, gemeinsam mit erforderlichen Drittanbieterabhängigkeiten.Starting with .NET Core 2.2, you can deploy your app as an FDE, along with any required third-party dependencies. Ihre App verwendet die .NET Core- Version, die auf dem Zielsystem installiert ist.Your app will use the version of .NET Core that's installed on the target system.

Was spricht für eine Framework-abhängige ausführbare Datei?Why deploy a framework-dependent executable?

Die Bereitstellung einer FDE hat eine Reihe von Vorteilen:Deploying an FDE has a number of advantages:

  • Ihr Bereitstellungspaket ist klein.The size of your deployment package is small. Sie müssen nur Ihre Anwendung und deren Abhängigkeiten bereitstellen, nicht .NET Core selbst.You only deploy your app and its dependencies, not .NET Core itself.

  • Mehrere Anwendungen verwenden die gleiche .NET Core-Installation, die Speicherplatz und Arbeitsspeicher auf dem Hostsystem verringert.Multiple apps use the same .NET Core installation, which reduces both disk space and memory usage on host systems.

  • Ihre App kann durch Aufrufen der veröffentlichten ausführbaren Datei ausgeführt werden, ohne das Hilfsprogramm dotnet direkt aufzurufen.Your app can be run by calling the published executable without invoking the dotnet utility directly.

Es gibt auch einige Nachteile:There are also a few disadvantages:

  • Ihre App kann nur ausgeführt werden, wenn die anvisierte .NET Core-Version oder eine höhere Version bereits auf dem Hostsystem installiert ist.Your app can run only if the version of .NET Core your app targets, or a later version, is already installed on the host system.

  • Es ist möglich, dass die .NET Core Runtime und die Bibliotheken ohne Ihr Wissen in zukünftigen Versionen geändert werden.It's possible for the .NET Core runtime and libraries to change without your knowledge in future releases. In seltenen Fällen kann dies das Verhalten Ihrer Anwendung ändern.In rare cases, this may change the behavior of your app.

  • Sie müssen Ihre App für jede Zielplattform veröffentlichen.You must publish your app for each target platform.

Beispiele mit SchrittanleitungenStep-by-step examples

Beispiele mit Schrittanleitungen für die Bereitstellung von .NET Core-Apps mit Befehlszeilenschnittstellentools finden Sie unter Deploying .NET Core Apps with CLI Tools (Bereitstellen von .NET Core-Apps mit Befehlszeilenschnittstellentools).For step-by-step examples of deploying .NET Core apps with CLI tools, see Deploying .NET Core Apps with CLI Tools. Beispiele mit Schrittanleitungen für die Bereitstellung von .NET Core-Apps mit Visual Studio finden Sie unter Deploying .NET Core Apps with Visual Studio (Bereitstellen von .NET Core-Apps mit Visual Studio).For step-by-step examples of deploying .NET Core apps with Visual Studio, see Deploying .NET Core Apps with Visual Studio.

Siehe auchSee also