Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird veranschaulicht, wie Sie Ihre .NET-Anwendung über die Befehlszeile veröffentlichen. .NET bietet drei Möglichkeiten zum Veröffentlichen Ihrer Anwendungen. Die frameworkabhängige Bereitstellung erzeugt eine plattformübergreifende DLL-Datei, die die lokal installierte .NET-Runtime verwendet. Die frameworkabhängige ausführbare Datei erzeugt eine plattformspezifische ausführbare Datei, die die lokal installierte .NET-Runtime verwendet. Die eigenständige ausführbare Datei erzeugt eine plattformspezifische ausführbare Datei, die eine lokale Kopie der .NET-Runtime enthält.
Eine Übersicht über diese Veröffentlichungsmodi finden Sie unter .NET-Anwendungsbereitstellung.
Benötigen Sie schnelle Hilfe zur Verwendung der CLI? In der folgenden Tabelle finden Sie einige Beispiele zum Veröffentlichen Ihrer App. Sie können das Zielframework mit dem -f <TFM>
-Parameter oder durch Bearbeiten der Projektdatei festlegen. Weitere Informationen finden Sie unter "Grundlagen zur Veröffentlichung".
Veröffentlichungsmodus | Befehl |
---|---|
Framework-abhängige Bereitstellung | dotnet publish -c Release -p:UseAppHost=false |
Frameworkabhängige ausführbare Datei | dotnet publish -c Release -r <RID> --self-contained false dotnet publish -c Release |
Eigenständige Bereitstellung | dotnet publish -c Release -r <RID> --self-contained true |
Hinweis
- Der Parameter
-c Release
ist nicht erforderlich. Er wird als Erinnerung zum Veröffentlichen des Release-Builds Ihrer App bereitgestellt. - In .NET SDK 3.1 oder höher ist die frameworkabhängige ausführbare Datei der Standardveröffentlichungsmodus, wenn der Basisbefehl
dotnet publish
ausgeführt wird.
Grundlagen der Veröffentlichung
Die <TargetFramework>
-Einstellung der Projektdatei gibt das Standardzielframework an, wenn Sie Ihre App veröffentlichen. Sie können das Zielframework in ein beliebiges gültiges Target Framework Moniker (TFM) ändern. Wenn Sie in Ihrem Projekt beispielsweise <TargetFramework>net9.0</TargetFramework>
verwenden, wird eine Binärdatei für .NET 9 erstellt. Der mit dieser Einstellung festgelegte TFM ist das Standardziel des dotnet publish
-Befehls.
Sie können mehrere durch Semikolons getrennte TFM-Werte in der <TargetFrameworks>
-Einstellung festlegen, wenn Sie mehr als ein Zielframework benötigen. Wenn Sie die App erstellen, wird für jedes Zielframework ein Build erstellt. Wenn Sie jedoch die App veröffentlichen, müssen Sie das Zielframework mit dem dotnet publish -f <TFM>
-Befehl angeben.
Der Standardmäßige BUILD-CONFIGURATION-Modus ist "Release ", es sei denn, der -c
Parameter wurde geändert.
Das Standardausgabeverzeichnis des dotnet publish
-Befehls lautet ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/
. Zum Beispiel wird mit dotnet publish -c Release -f net9.0
in ./bin/Release/net9.0/publish/
veröffentlicht. Sie können jedoch für alle Buildausgaben einen vereinfachten Ausgabepfad und eine vereinfachte Ordnerstruktur wählen. Weitere Informationen finden Sie unter Artefakte – Ausgabelayout.
Native Abhängigkeiten
Wenn Ihre App über native Abhängigkeiten verfügt, kann sie auf anderen Betriebssystemen möglicherweise nicht ausgeführt werden. Wenn Ihre App beispielsweise die native Windows-API verwendet, kann sie nicht unter macOS oder Linux ausgeführt werden. In diesem Fall müssten Sie plattformspezifischen Code bereitstellen und eine ausführbare Datei für jede Plattform kompilieren.
Beachten Sie außerdem, dass Ihre App möglicherweise nicht auf jeder Plattform ausgeführt werden kann, wenn Sie auf eine Bibliothek verwiesen haben, die eine native Abhängigkeit aufweist. Es ist jedoch möglich, dass ein NuGet-Paket, auf das Sie verweisen, plattformspezifische Versionen enthält, um die erforderlichen nativen Abhängigkeiten für Sie zu verarbeiten.
Beim Verteilen einer App mit nativen Abhängigkeiten müssen Sie möglicherweise den dotnet publish -r <RID>
-Switch verwenden, um die Zielplattform für Ihre Veröffentlichung anzugeben. Eine Liste der Laufzeit-IDs finden Sie im Rid-Katalog (Runtime Identifier).
Weitere Informationen zu plattformspezifischen Binärdateien werden in den Abschnitten frameworkabhängige ausführbare Datei und selbstständige Bereitstellung behandelt.
Beispiel-App
Sie können die folgende App zum Kennenlernen der Veröffentlichungsbefehle verwenden. Erstellen Sie die App, indem Sie die folgenden Befehle im Terminal ausführen:
mkdir apptest1
cd apptest1
dotnet new console
dotnet add package Figgle
Ändern Sie die von der Konsolenvorlage generierte Program.cs
- oder Program.vb
-Datei wie folgt:
using System;
namespace apptest1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Figgle.FiggleFonts.Standard.Render("Hello, World!"));
}
}
}
Module Program
Sub Main(args As String())
Console.WriteLine(Figgle.FiggleFonts.Standard.Render("Hello, World!"))
End Sub
End Module
Wenn Sie die App ausführen (dotnet run
), wird die folgende Ausgabe angezeigt:
_ _ _ _ __ __ _ _ _
| | | | ___| | | ___ \ \ / /__ _ __| | __| | |
| |_| |/ _ \ | |/ _ \ \ \ /\ / / _ \| '__| |/ _` | |
| _ | __/ | | (_) | \ V V / (_) | | | | (_| |_|
|_| |_|\___|_|_|\___( ) \_/\_/ \___/|_| |_|\__,_(_)
|/
Framework-abhängige Bereitstellung
Wenn Sie Ihre App als frameworkabhängige Bereitstellung veröffentlichen, wird eine <PROJECT-NAME>.dll
-Datei im ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/
-Ordner erstellt. Navigieren Sie zum Ausgabeordner, und verwenden Sie den Befehl dotnet <PROJECT-NAME>.dll
, um Ihre App auszuführen.
Ihre App wird für eine bestimmte Version von .NET konfiguriert. Die .NET-Zielruntime ist auf jedem Computer erforderlich, auf dem Ihre App ausgeführt wird. Wenn Ihre App beispielsweise auf .NET 9 ausgerichtet ist, muss auf jedem Computer, auf dem Ihre App ausgeführt wird, die .NET 9-Laufzeit installiert sein. Wie im Abschnitt " Grundlagen der Veröffentlichung" angegeben, können Sie Ihre Projektdatei bearbeiten, um das Standardzielframework zu ändern oder mehrere Frameworks zu verwenden.
Beim Veröffentlichen einer frameworkabhängigen Bereitstellung wird eine App erstellt, die automatisch ein Rollforward auf den neuesten .NET-Sicherheitspatch ausführt, der auf dem System verfügbar ist. Weitere Informationen zur Versionsbindung zum Kompilierzeitpunkt finden Sie unter Auswählen der zu verwendenden .NET-Version.
Veröffentlichungsmodus | Befehl |
---|---|
Framework-abhängige Bereitstellung | dotnet publish -c Release -p:UseAppHost=false |
Frameworkabhängige ausführbare Datei
Die frameworkabhängige ausführbare Datei ist der Standardmodus des Basisbefehls dotnet publish
. Sie müssen keine weiteren Parameter festlegen, wenn Sie das aktuelle Betriebssystem als Ziel verwenden möchten.
In diesem Modus wird ein plattformspezifischer ausführbarer Host erstellt, der Ihre plattformübergreifende App beherbergt. Dieser Modus ähnelt der frameworkabhängigen Bereitstellung, da dabei ein Host in Form des dotnet
-Befehls erforderlich ist. Der Dateiname des ausführbaren Hosts variiert je nach Plattform. Der Name sollte <PROJECT-FILE>.exe
ähnlich sein. Sie können diese ausführbare Datei direkt ausführen, anstatt dotnet <PROJECT-FILE>.dll
aufzurufen, was jedoch auch eine akzeptable Möglichkeit zum Ausführen der App darstellt.
Ihre App wird für eine bestimmte Version von .NET konfiguriert. Die .NET-Zielruntime ist auf jedem Computer erforderlich, auf dem Ihre App ausgeführt wird. Wenn Ihre App beispielsweise auf .NET 9 ausgerichtet ist, muss auf jedem Computer, auf dem Ihre App ausgeführt wird, die .NET 9-Laufzeit installiert sein. Wie im Abschnitt " Grundlagen der Veröffentlichung" angegeben, können Sie Ihre Projektdatei bearbeiten, um das Standardzielframework zu ändern oder mehrere Frameworks zu verwenden.
Beim Veröffentlichen einer frameworkabhängigen ausführbaren Datei wird eine App erstellt, die automatisch ein Rollforward auf den neuesten .NET-Sicherheitspatch ausführt, der auf dem System verfügbar ist. Weitere Informationen zur Versionsbindung zum Kompilierzeitpunkt finden Sie unter Auswählen der zu verwendenden .NET-Version.
Veröffentlichungsmodus | Befehl |
---|---|
Frameworkabhängige ausführbare Datei | dotnet publish -c Release -r <RID> --self-contained false dotnet publish -c Release |
Wenn Sie den -r
-Switch verwenden, wird der Pfad des Ausgabeordner in folgenden geändert: ./bin/<BUILD-CONFIGURATION>/<TFM>/<RID>/publish/
Führen Sie aus, wenn Sie die dotnet publish -f net9.0 -r win-x64 --self-contained false
verwenden. Mit diesem Befehl wird die folgende ausführbare Datei erstellt: ./bin/Debug/net9.0/win-x64/publish/apptest1.exe
Hinweis
Sie können die Gesamtgröße Ihrer Bereitstellung reduzieren, indem Sie den invarianten Modus der Globalisierung aktivieren. Dieser Modus eignet sich für Anwendungen, die nicht für den globalen Einsatz ausgelegt sind, und Formatierungskonventionen, Groß-/Kleinschreibungskonventionen, Zeichenfolgenvergleiche und Sortierreihenfolgen der invarianten Kultur verwenden können. Weitere Informationen zum invarianten Globalisierungsmodus und zur Aktivierung finden Sie im .NET Globalization Invariant Mode.
Konfigurieren des Suchverhaltens der .NET-Installation
In .NET 9 und höher können Sie die .NET-Installationssuchpfade der veröffentlichten ausführbaren Datei über die Eigenschaften AppHostDotNetSearch
und AppHostRelativeDotNet
konfigurieren.
AppHostDotNetSearch
ermöglicht die Angabe eines oder mehrerer Speicherorte, an denen die ausführbare Datei nach einer .NET-Installation sucht:
AppLocal
: Ordner der ausführbaren Datei der AppAppRelative
: relativer Pfad der ausführbaren Datei der AppEnvironmentVariables
: Wert derDOTNET_ROOT[_<arch>]
-UmgebungsvariablenGlobal
: registrierte und standardmäßige globale Installationsspeicherorte
AppHostRelativeDotNet
gibt den relativen Pfad der ausführbaren Datei an, die gesucht wird, wenn AppHostDotNetSearch
AppRelative
enthält.
Weitere Informationen finden Sie unter AppHostDotNetSearch
, AppHostRelativeDotNet
und Installationsstandortoptionen in Apphost.
Eigenständige Bereitstellung
Wenn Sie eine eigenständige Bereitstellung veröffentlichen, erstellt das .NET SDK eine plattformspezifische ausführbare Datei. Die Veröffentlichung eines SCD umfasst alle erforderlichen .NET-Dateien zum Ausführen Ihrer App, enthält jedoch nicht die systemeigenen Abhängigkeiten von .NET (z. B. für .NET 8 unter Linux). Diese Abhängigkeiten müssen auf dem System vorhanden sein, bevor die App ausgeführt wird.
Beim Veröffentlichen einer eigenständigen Bereitstellung wird eine App erstellt, für die kein Rollforward auf den neuesten verfügbaren .NET-Sicherheitspatch ausgeführt wird. Weitere Informationen zur Versionsbindung zum Kompilierzeitpunkt finden Sie unter Auswählen der zu verwendenden .NET-Version.
Sie müssen die folgenden Schalter mit dem dotnet publish
-Befehl verwenden, um ein SCD zu veröffentlichen:
-r <RID>
Dieser Switch verwendet einen Bezeichner (RID), um die Zielplattform anzugeben. Eine Liste der Laufzeit-IDs finden Sie im Rid-Katalog (Runtime Identifier).
--self-contained true
Dieser Schalter weist das .NET Core SDK an, eine ausführbare Datei als eigenständige Bereitstellung zu erstellen.
Veröffentlichungsmodus | Befehl |
---|---|
Eigenständige Bereitstellung | dotnet publish -c Release -r <RID> --self-contained true |
Tipp
- In .NET 6 und höheren Versionen können Sie die Gesamtgröße kompatibler eigenständiger Apps reduzieren, indem Sie gekürzt veröffentlichen. Dabei kann der Trimmer Teile des Frameworks und referenzierte Assemblys entfernen, die sich weder in einem Codepfad befinden noch potenziell in der Runtimereflexion referenziert werden. Sehen Sie sich die Verträglichkeitsprobleme beim Trimmen an, um festzustellen, ob das Trimmen für Ihre Anwendung sinnvoll ist.
- Sie können die Gesamtgröße Ihrer Bereitstellung reduzieren, indem Sie den invarianten Modus der Globalisierung aktivieren. Dieser Modus eignet sich für Anwendungen, die nicht für den globalen Einsatz ausgelegt sind, und Formatierungskonventionen, Groß-/Kleinschreibungskonventionen, Zeichenfolgenvergleiche und Sortierreihenfolgen der invarianten Kultur verwenden können. Weitere Informationen zum invarianten Modus der Globalisierung und zur Aktivierung finden Sie im .NET Core Globalization Invariant Mode.