dotnet publishdotnet publish

Dieser Artikel gilt für: ✔️ .NET Core 2.1 SDK und neuere VersionenThis article applies to: ✔️ .NET Core 2.1 SDK and later versions

nameName

dotnet publish veröffentlicht die Anwendung und ihre Abhängigkeiten in einem Ordner für die Bereitstellung auf einem Hostsystem.dotnet publish - Publishes the application and its dependencies to a folder for deployment to a hosting system.

ÜbersichtSynopsis

dotnet publish [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
    [-f|--framework <FRAMEWORK>] [--force] [--interactive]
    [--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies]
    [--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
    [-p:PublishReadyToRun=true] [-p:PublishSingleFile=true] [-p:PublishTrimmed=true]
    [-r|--runtime <RUNTIME_IDENTIFIER>] [--self-contained [true|false]]
    [--no-self-contained] [-v|--verbosity <LEVEL>]
    [--version-suffix <VERSION_SUFFIX>]

dotnet publish -h|--help

BeschreibungDescription

dotnet publish kompiliert die Anwendung, liest ihre Abhängigkeiten, die in der Projektdatei angegeben sind, und veröffentlicht die resultierenden Dateien in einem Verzeichnis.dotnet publish compiles the application, reads through its dependencies specified in the project file, and publishes the resulting set of files to a directory. Die Ausgabe umfasst die folgenden Objekte:The output includes the following assets:

  • Intermediate Language-Code (IL) in einer Assembly mit einer DLL-Erweiterung.Intermediate Language (IL) code in an assembly with a dll extension.
  • Die Datei .deps.json, die alle Abhängigkeiten des Projekts enthältA .deps.json file that includes all of the dependencies of the project.
  • Die Datei .runtimeconfig.json, die die Shared Runtime, die von der Anwendung erwartet wird, sowie andere Konfigurationsoptionen für die Runtime festlegt (z. B. die Art der Garbage Collection).A .runtimeconfig.json file that specifies the shared runtime that the application expects, as well as other configuration options for the runtime (for example, garbage collection type).
  • Die Abhängigkeiten der Anwendung, die aus dem NuGet-Cache in den Ausgabeordner kopiert werden.The application's dependencies, which are copied from the NuGet cache into the output folder.

Die Ausgabe des Befehls dotnet publish steht für die Bereitstellung zur Ausführung auf einem Hostsystem bereit (z.B. ein Server, Computer, Mac oder Laptop).The dotnet publish command's output is ready for deployment to a hosting system (for example, a server, PC, Mac, laptop) for execution. Es ist die einzige offiziell unterstützte Methode zum Vorbereiten der Anwendung für die Bereitstellung.It's the only officially supported way to prepare the application for deployment. Je nach Art der Bereitstellung, die im Projekt angegeben ist, hat das Hostsystem die freigegebene .NET Core-Laufzeit installiert oder nicht.Depending on the type of deployment that the project specifies, the hosting system may or may not have the .NET Core shared runtime installed on it. Weitere Informationen finden Sie unter Veröffentlichen von .NET Core-Apps mit der .NET Core-CLI.For more information, see Publish .NET Core apps with the .NET Core CLI.

Implizite WiederherstellungImplicit restore

Sie müssen dotnet restore nicht ausführen, da der Befehl implizit von allen Befehlen ausgeführt wird, die eine Wiederherstellung erfordern. Zu diesen zählen z. B. dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish und dotnet pack.You don't have to run dotnet restore because it's run implicitly by all commands that require a restore to occur, such as dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish, and dotnet pack. Verwenden Sie die Option --no-restore, um die implizite Wiederherstellung zu deaktivieren.To disable implicit restore, use the --no-restore option.

In bestimmten Fällen eignet sich der dotnet restore-Befehl dennoch. Dies ist etwa bei Szenarios der Fall, in denen die explizite Wiederherstellung sinnvoll ist. Beispiele hierfür sind Continuous Integration-Builds in Azure DevOps Services oder Buildsysteme, die den Zeitpunkt für die Wiederherstellung explizit steuern müssen.The dotnet restore command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.

Informationen zum Verwalten von NuGet-Feeds finden Sie in der dotnet restoreDokumentation.For information about how to manage NuGet feeds, see the dotnet restore documentation.

MSBuildMSBuild

Der Befehl dotnet publish ruft MSBuild auf, welches das Publish-Ziel aufruft.The dotnet publish command calls MSBuild, which invokes the Publish target. Alle Parameter, die an dotnet publish übergeben werden, werden an MSBuild übergeben.Any parameters passed to dotnet publish are passed to MSBuild. Die Parameter -c und -o verweisen auf die MSBuild-Eigenschaften Configuration bzw. PublishDir.The -c and -o parameters map to MSBuild's Configuration and PublishDir properties, respectively.

Der dotnet publish-Befehl akzeptiert MSBuild-Optionen, z. B. -p zum Festlegen von Eigenschaften oder -l zum Definieren eines Protokolls.The dotnet publish command accepts MSBuild options, such as -p for setting properties and -l to define a logger. Beispielsweise können Sie eine MSBuild-Eigenschaft mit dem folgenden Format festlegen: -p:<NAME>=<VALUE>.For example, you can set an MSBuild property by using the format: -p:<NAME>=<VALUE>. Sie können auch Veröffentlichungseigenschaften festlegen, indem Sie auf eine PUBXML-Datei verweisen, wie z. B. in der folgenden Codezeile:You can also set publish-related properties by referring to a .pubxml file, for example:

dotnet publish -p:PublishProfile=FolderProfile

Im vorherigen Beispiel wird die Datei FolderProfile.pubxml verwendet, die sich im Ordner <project_folder>/Properties/PublishProfiles befindet.The preceding example uses the FolderProfile.pubxml file that is found in the <project_folder>/Properties/PublishProfiles folder. Wenn Sie beim Festlegen der PublishProfile-Eigenschaft einen Pfad und eine Dateierweiterung angeben, werden diese ignoriert.If you specify a path and file extension when setting the PublishProfile property, they are ignored. MSBuild sucht standardmäßig im Ordner Properties/PublishProfiles und übernimmt die PUBXML-Dateierweiterung.MSBuild by default looks in the Properties/PublishProfiles folder and assumes the pubxml file extension. Um den Pfad und den Dateinamen einschließlich der Erweiterung anzugeben, legen Sie die PublishProfileFullPath-Eigenschaft anstelle der PublishProfile-Eigenschaft fest.To specify the path and filename including extension, set the PublishProfileFullPath property instead of the PublishProfile property.

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

ArgumenteArguments

  • PROJECT|SOLUTION

    Das Projekt bzw. die Projektmappe, die veröffentlicht werden soll.The project or solution to publish.

    • PROJECT ist der Pfad und Dateiname einer C#-, F#- oder Visual Basic-Projektdatei, oder der Pfad zu einem Verzeichnis, das eine C#-, F#- oder Visual Basic-Projektdatei enthält.PROJECT is the path and filename of a C#, F#, or Visual Basic project file, or the path to a directory that contains a C#, F#, or Visual Basic project file. Wenn das Verzeichnis nicht angegeben wird, wird standardmäßig das aktuelle Verzeichnis verwendet.If the directory is not specified, it defaults to the current directory.

    • SOLUTION ist der Pfad und Dateiname einer Projektmappendatei (mit der Erweiterung .sln), oder der Pfad zu einem Verzeichnis, das eine Projektmappendatei enthält.SOLUTION is the path and filename of a solution file (.sln extension), or the path to a directory that contains a solution file. Wenn das Verzeichnis nicht angegeben wird, wird standardmäßig das aktuelle Verzeichnis verwendet.If the directory is not specified, it defaults to the current directory. Verfügbar seit .NET Core 3.0 SDK.Available since .NET Core 3.0 SDK.

OptionenOptions

  • -c|--configuration <CONFIGURATION>

    Legt die Buildkonfiguration fest.Defines the build configuration. Der Standardwert für die meisten Projekte ist Debug, aber Sie können die Buildkonfigurationseinstellungen in Ihrem Projekt überschreiben.The default for most projects is Debug, but you can override the build configuration settings in your project.

  • -f|--framework <FRAMEWORK>

    Veröffentlicht die Anwendung für das angegebene Zielframework.Publishes the application for the specified target framework. Sie müssen das Zielframework in der Projektdatei angeben.You must specify the target framework in the project file.

  • --force

    Erzwingt das Auflösen aller Abhängigkeiten, auch wenn die letzte Wiederherstellung erfolgreich war.Forces all dependencies to be resolved even if the last restore was successful. Dieses Flag anzugeben, entspricht dem Löschen der Datei project.assets.json.Specifying this flag is the same as deleting the project.assets.json file.

  • -h|--help

    Druckt eine kurze Hilfe für den Befehl.Prints out a short help for the command.

  • --interactive

    Ermöglicht dem Befehl, anzuhalten und auf Benutzereingaben oder Aktionen zu warten.Allows the command to stop and wait for user input or action. Beispielsweise, um die Authentifizierung abzuschließen.For example, to complete authentication. Verfügbar seit .NET Core 3.0 SDK.Available since .NET Core 3.0 SDK.

  • --manifest <PATH_TO_MANIFEST_FILE>

    Gibt mindestens ein Zielmanifest an, das verwendet wird, um die Menge an mit der App veröffentlichten Paketen zu senken.Specifies one or several target manifests to use to trim the set of packages published with the app. Die Manifestdatei ist Teil der Ausgabe des dotnet store-Befehls.The manifest file is part of the output of the dotnet store command. Um mehrere Manifeste anzugeben, fügen Sie die --manifest-Option für jedes Manifest hinzu.To specify multiple manifests, add a --manifest option for each manifest.

  • --no-build

    Erstellt das Projekt nicht vor der Veröffentlichung.Doesn't build the project before publishing. Zudem wird das Flag --no-restore implizit festgelegt.It also implicitly sets the --no-restore flag.

  • --no-dependencies

    Ignoriert Verweise zwischen Projekten und stellt nur das zum Erstellen angegebene Stammprojekt wieder her.Ignores project-to-project references and only restores the root project.

  • --nologo

    Unterdrückt die Anzeige von Startbanner und Copyrightmeldung.Doesn't display the startup banner or the copyright message. Verfügbar seit .NET Core 3.0 SDK.Available since .NET Core 3.0 SDK.

  • --no-restore

    Führt keine implizite Wiederherstellung aus, wenn der Befehl ausgeführt wird.Doesn't execute an implicit restore when running the command.

  • -o|--output <OUTPUT_DIRECTORY>

    Gibt den Pfad für das Ausgabeverzeichnis an.Specifies the path for the output directory.

    Wenn diese Option nicht angegeben wird, wird für runtimeabhängige ausführbare Dateien und plattformübergreifende Binärdateien standardmäßig [Projektdateiordner]./bin/[Konfiguration]/[Framework]/publish/ verwendet.If not specified, it defaults to [project_file_folder]./bin/[configuration]/[framework]/publish/ for a runtime-dependent executable and cross-platform binaries. Für eigenständige ausführbare Dateien wird standardmäßig [Projektdateiordner]./bin/[Konfiguration]/[Framework]/[Runtime]/publish/ verwendet.It defaults to [project_file_folder]/bin/[configuration]/[framework]/[runtime]/publish/ for a self-contained executable.

    In einem Webprojekt führen aufeinanderfolgende dotnet publish-Befehle zu geschachtelten Ausgabeordnern, wenn sich der Ausgabeordner im Projektordner befindet.In a web project, if the output folder is in the project folder, successive dotnet publish commands result in nested output folders. Wenn der Projektordner beispielsweise MeinProjekt lautet und als Ausgabeordner MeinProjekt/publish festgelegt ist, werden bei zweimaliger Ausführung von dotnet publish die Inhaltsdateien (beispielsweise die CONFIG- und JSON-Dateien) der zweiten Ausführung in MeinProjekt/publish/publish platziert.For example, if the project folder is myproject, and the publish output folder is myproject/publish, and you run dotnet publish twice, the second run puts content files such as .config and .json files in myproject/publish/publish. Um eine Schachtelung der Veröffentlichungsordner zu vermeiden, geben Sie einen Ordner für die Veröffentlichung an, der sich nicht direkt unter dem Projektordner befindet. Alternativ können Sie den Veröffentlichungsordner aus dem Projekt ausschließen.To avoid nesting publish folders, specify a publish folder that is not directly under the project folder, or exclude the publish folder from the project. Um einen Veröffentlichungsordner namens publishoutput auszuschließen, fügen Sie das folgende Element einem PropertyGroup-Element in der CSPROJ-Datei hinzu:To exclude a publish folder named publishoutput, add the following element to a PropertyGroup element in the .csproj file:

    <DefaultItemExcludes>$(DefaultItemExcludes);publishoutput**</DefaultItemExcludes>
    
    • .NET Core 3. x SDK und höher.NET Core 3.x SDK and later

      Wenn beim Veröffentlichen eines Projekts ein relativer Pfad angegeben wird, ist das generierte Ausgabeverzeichnis relativ zum aktuellen Arbeitsverzeichnis statt zum Speicherort der Projektdatei.If a relative path is specified when publishing a project, the output directory generated is relative to the current working directory, not to the project file location.

      Wenn beim Veröffentlichen einer Projektmappe ein relativer Pfad angegeben wird, werden alle Ausgaben für sämtliche Projekte im angegebenen Ordner relativ zum aktuellen Arbeitsverzeichnis gespeichert.If a relative path is specified when publishing a solution, all output for all projects goes into the specified folder relative to the current working directory. Um die Veröffentlichungsausgabe in eigenen Ordnern für jedes Projekt zu speichern, geben Sie einen relativen Pfad an, indem Sie die MSBuild-PublishDir-Eigenschaft anstelle der --output-Option verwenden.To make publish output go to separate folders for each project, specify a relative path by using the msbuild PublishDir property instead of the --output option. Beispielsweise wird mit dotnet publish -p:PublishDir=.\publish die Veröffentlichungsausgabe für jedes Projekt an den Ordner publish unter dem Ordner gesendet, der die Projektdatei enthält.For example, dotnet publish -p:PublishDir=.\publish sends publish output for each project to a publish folder under the folder that contains the project file.

    • .NET Core 2.x SDK.NET Core 2.x SDK

      Wenn beim Veröffentlichen eines Projekts ein relativer Pfad angegeben wird, ist das generierte Ausgabeverzeichnis relativ zum Speicherort der Projektdatei statt zum aktuellen Arbeitsverzeichnis.If a relative path is specified when publishing a project, the output directory generated is relative to the project file location, not to the current working directory.

      Wenn beim Veröffentlichen einer Projektmappe ein relativer Pfad angegeben wird, wird die Ausgabe jedes Projekts in einem eigenen Ordner relativ zum Speicherort der Projektdatei gespeichert.If a relative path is specified when publishing a solution, each project's output goes into a separate folder relative to the project file location. Wenn beim Veröffentlichen einer Projektmappe ein absoluter Pfad angegeben wird, werden alle Veröffentlichungsausgaben für alle Projekte im angegebenen Ordner gespeichert.If an absolute path is specified when publishing a solution, all publish output for all projects goes into the specified folder.

  • -p:PublishReadyToRun=true

    Kompiliert Anwendungsassemblys im R2R-Format (ReadyToRun).Compiles application assemblies as ReadyToRun (R2R) format. R2R ist eine Form der AOT-Kompilierung (Ahead-Of-Time).R2R is a form of ahead-of-time (AOT) compilation. Weitere Informationen finden Sie unter ReadyToRun-Images.For more information, see ReadyToRun images. Verfügbar seit .NET Core 3.0 SDK.Available since .NET Core 3.0 SDK.

    Es wird empfohlen, diese Option nicht auf der Befehlszeile, sondern in einem Veröffentlichungsprofil anzugeben.We recommend that you specify this option in a publish profile rather than on the command line. Weitere Informationen finden Sie unter MSBuild.For more information, see MSBuild.

  • -p:PublishSingleFile=true

    Packt die App in einer plattformspezifischen ausführbaren Einzeldatei.Packages the app into a platform-specific single-file executable. Die ausführbare Datei ist selbstextrahierend und enthält alle Abhängigkeiten (einschließlich der nativen), die zum Ausführen der App erforderlich sind.The executable is self-extracting and contains all dependencies (including native) that are required to run the app. Beim ersten Ausführen der App wird die Anwendung in ein Verzeichnis extrahiert, das auf dem Namen und dem Buildbezeichner der App basiert.When the app is first run, the application is extracted to a directory based on the app name and build identifier. Der Start ist beim erneuten Ausführen der App schneller.Startup is faster when the application is run again. Die Anwendung muss sich nicht selbst ein zweites Mal extrahieren, sofern keine neue Version verwendet wird.The application doesn't need to extract itself a second time unless a new version is used. Verfügbar seit .NET Core 3.0 SDK.Available since .NET Core 3.0 SDK.

    Weitere Informationen zum Veröffentlichen einzelner Dateien finden Sie im Einzeldatei-Bundler-Entwurfsdokument.For more information about single-file publishing, see the single-file bundler design document.

    Es wird empfohlen, diese Option nicht auf der Befehlszeile, sondern in einem Veröffentlichungsprofil anzugeben.We recommend that you specify this option in a publish profile rather than on the command line. Weitere Informationen finden Sie unter MSBuild.For more information, see MSBuild.

  • -p:PublishTrimmed=true

    Kürzt nicht verwendete Bibliotheken, um die Bereitstellungsgröße einer App zu verringern, wenn diese als selbstextrahierende ausführbare Datei veröffentlicht wird.Trims unused libraries to reduce the deployment size of an app when publishing a self-contained executable. Weitere Informationen finden Sie unter Kürzen eigenständiger Bereitstellungen und ausführbarer Dateien.For more information, see Trim self-contained deployments and executables. Verfügbar seit .NET Core 3.0 SDK.Available since .NET Core 3.0 SDK.

    Es wird empfohlen, diese Option nicht auf der Befehlszeile, sondern in einem Veröffentlichungsprofil anzugeben.We recommend that you specify this option in a publish profile rather than on the command line. Weitere Informationen finden Sie unter MSBuild.For more information, see MSBuild.

  • --self-contained [true|false]

    Veröffentlicht die .NET Core-Runtime mit Ihrer Anwendung, sodass die Runtime nicht auf dem Zielcomputer installiert werden muss.Publishes the .NET Core runtime with your application so the runtime doesn't need to be installed on the target machine. Der Standardwert ist true, wenn ein Laufzeitbezeichner angegeben wird und das Projekt ein ausführbares Projekt (kein Bibliotheksprojekt) ist.Default is true if a runtime identifier is specified and the project is an executable project (not a library project). Weitere Informationen finden Sie unter Veröffentlichen von .NET Core-Anwendungen und Veröffentlichen von .NET Core-Apps mit der .NET Core-CLI.For more information, see .NET Core application publishing and Publish .NET Core apps with the .NET Core CLI.

    Wenn diese Option verwendet wird, ohne true oder false anzugeben, ist der Standardwert true.If this option is used without specifying true or false, the default is true. Fügen Sie in diesem Fall das Projektmappen- oder Projektargument nicht unmittelbar nach --self-contained ein, da an dieser Position true oder false erwartet wird.In that case, don't put the solution or project argument immediately after --self-contained, because true or false is expected in that position.

  • --no-self-contained

    Entspricht --self-contained false.Equivalent to --self-contained false. Verfügbar seit .NET Core 3.0 SDK.Available since .NET Core 3.0 SDK.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Veröffentlicht die Anwendung für eine bestimmte Laufzeit.Publishes the application for a given runtime. Eine Liste der Runtime-IDs (RIDs) finden Sie unter RID-Katalog.For a list of Runtime Identifiers (RIDs), see the RID catalog. Weitere Informationen finden Sie unter Veröffentlichen von .NET Core-Anwendungen und Veröffentlichen von .NET Core-Apps mit der .NET Core-CLI.For more information, see .NET Core application publishing and Publish .NET Core apps with the .NET Core CLI.

  • -v|--verbosity <LEVEL>

    Legt den Ausführlichkeitsgrad für den Befehl fest.Sets the verbosity level of the command. Zulässige Werte sind q[uiet], m[inimal], n[ormal], d[etailed] und diag[nostic].Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]. Der Standardwert ist minimalsein.Default value is minimal.

  • --version-suffix <VERSION_SUFFIX>

    Definiert das Versionssuffix zum Ersetzen des Sternchens (*) im Versionsfeld der Projektdatei.Defines the version suffix to replace the asterisk (*) in the version field of the project file.

BeispieleExamples

  • Erstellen Sie eine runtime-abhängige plattformübergreifende Binärdatei für das Projekt im aktuellen Verzeichnis:Create a runtime-dependent cross-platform binary for the project in the current directory:

    dotnet publish
    

    Ab .NET Core 3.0 SDK wird mit diesem Beispielbefehl auf eine runtime-abhängige ausführbare Datei für die aktuelle Plattform erstellt.Starting with .NET Core 3.0 SDK, this example also creates a runtime-dependent executable for the current platform.

  • Erstellen Sie für das Projekt im aktuellen Verzeichnis eine eigenständige ausführbare Datei für eine spezifische Runtime:Create a self-contained executable for the project in the current directory, for a specific runtime:

    dotnet publish --runtime osx.10.11-x64
    

    Die RID muss in der Projektdatei enthalten sein.The RID must be in the project file.

  • Erstellen Sie für das Projekt im aktuellen Verzeichnis eine runtime-abhängige ausführbare Datei für eine spezifische Plattform:Create a runtime-dependent executable for the project in the current directory, for a specific platform:

    dotnet publish --runtime osx.10.11-x64 --self-contained false
    

    Die RID muss in der Projektdatei enthalten sein.The RID must be in the project file. Dieses Beispiel gilt für .NET Core 3.0 SDK und höher.This example applies to .NET Core 3.0 SDK and later versions.

  • Veröffentlichen Sie das Projekt im aktuellen Verzeichnis für eine spezifische Runtime und ein spezifisches Zielframework:Publish the project in the current directory, for a specific runtime and target framework:

    dotnet publish --framework netcoreapp3.1 --runtime osx.10.11-x64
    
  • Veröffentlichen Sie die angegebene Projektdatei:Publish the specified project file:

    dotnet publish ~/projects/app1/app1.csproj
    
  • Veröffentlichen sie die aktuelle Anwendung, aber fügen Sie während der Wiederherstellung keine Projekt-zu-Projekt-Verweise hinzu, sondern nur das Stammprojekt:Publish the current application but don't restore project-to-project (P2P) references, just the root project during the restore operation:

    dotnet publish --no-dependencies
    

Siehe auchSee also