Rollforward der eigenständigen RuntimebereitstellungSelf-contained deployment runtime roll forward

Eigenständige Anwendungsbereitstellungen von .NET Core enthalten sowohl die .NET Core-Bibliotheken als auch die .NET Core-Runtime..NET Core self-contained application deployments include both the .NET Core libraries and the .NET Core runtime. Beginnend mit .NET Core SDK 2.1 (Version 2.1.300) veröffentlicht eine eigenständige Anwendungsbereitstellung die höchste Patch-Runtime auf Ihrem Computer.Starting in .NET Core 2.1 SDK (version 2.1.300), a self-contained application deployment publishes the highest patch runtime on your machine. dotnet publish wählt für eine eigenständige Bereitstellung standardmäßig die aktuellste installierte Version als Teil des SDK auf dem veröffentlichenden Computer aus.By default, dotnet publish for a self-contained deployment selects the latest version installed as part of the SDK on the publishing machine. Dadurch kann Ihre bereitgestellte Anwendung während publish mit Problembehebungen der Sicherheit (und anderen Problembehebungen) ausgeführt werden.This enables your deployed application to run with security fixes (and other fixes) available during publish. Die Anwendung muss neu veröffentlicht werden, um einen neuen Patch abzurufen.The application must be re-published to obtain a new patch. Eigenständige Anwendungen werden durch Angabe von -r <RID> auf dem Befehl dotnet publish oder durch Angabe des Runtime-Bezeichners (RID) in der Projektdatei (CSPROJ/VBPROJ) oder der Befehlszeile erstellt.Self-contained applications are created by specifying -r <RID> on the dotnet publish command or by specifying the runtime identifier (RID) in the project file (csproj / vbproj) or on the command line.

Übersicht über Rollforward der PatchversionPatch version roll forward overview

restore, build und publish sind dotnet-Befehle, die separat ausgeführt werden können.restore, build and publish are dotnet commands that can run separately. Die Auswahl der Runtime ist Teil des Vorgangs restore, nicht publish oder build.The runtime choice is part of the restore operation, not publish or build. Wenn Sie publish aufrufen, wird die neueste Patchversion ausgewählt.If you call publish, the latest patch version will be chosen. Wenn Sie publish mit dem Argument --no-restore aufrufen, erhalten Sie möglicherweise nicht die gewünschte Patchversion, da ein vorheriger restore-Vorgang möglicherweise nicht mit der neuen Richtlinie für die Veröffentlichung eigenständiger Anwendungen ausgeführt wurde.If you call publish with the --no-restore argument, then you may not get the desired patch version because a prior restore may not have been executed with the new self-contained application publishing policy. In diesem Fall wird ein Buildfehler mit einem Text generiert, der dem Folgenden ähnelt:In this case, a build error is generated with text similar to the following:

„Das Projekt wurde mit Microsoft.NETCore.App-Version 2.0.0 wiederhergestellt. Jedoch wird aufgrund der aktuellen Einstellungen stattdessen Version 2.0.6 verwendet."The project was restored using Microsoft.NETCore.App version 2.0.0, but with current settings, version 2.0.6 would be used instead. Stellen Sie sicher, dass die gleichen Einstellungen für „restore“ und nachfolgende Vorgänge wie „build“ oder „publish“ verwendet werden, um dieses Problem zu beheben.To resolve this issue, make sure the same settings are used for restore and for subsequent operations such as build or publish. Dieser Fehler tritt in der Regel auf, wenn die Eigenschaft RuntimeIdentifier während den Vorgängen „build“ oder „publish“ festgelegt wird, jedoch nicht während „restore“.Typically this issue can occur if the RuntimeIdentifier property is set during build or publish but not during restore."

Hinweis

restore und build können implizit als Teil eines anderen Befehls ausgeführt werden, z.B. publish.restore and build can be run implicitly as part of another command, like publish. Wenn sie implizit als Teil eines anderen Befehls ausgeführt werden, wird zusätzlicher Kontext bereitgestellt, sodass die richtigen Artefakte erstellt werden.When run implicitly as part of another command, they are provided with additional context so that the right artifacts are produced. Wenn Sie publish mit einer Runtime ausführen (z.B. dotnet publish -r linux-x64), stellt restore Pakete implizit für die Linux-x64-Runtime wieder her.When you publish with a runtime (for example, dotnet publish -r linux-x64), the implicit restore restores packages for the linux-x64 runtime. Wenn Sie restore explizit aufrufen, werden Runtime-Pakete nicht standardmäßig wiederhergestellt, da dieser Kontext nicht besteht.If you call restore explicitly, it does not restore runtime packages by default, because it doesn't have that context.

Umgehen von restore während publishHow to avoid restore during publish

Das Ausführen von restore als Teil des publish-Vorgangs kann für Ihr Szenario unangebracht sein.Running restore as part of the publish operation may be undesirable for your scenario. Führen Sie die folgenden Schritte aus, um restore während publish beim Erstellen eigenständiger Anwendungen zu vermeiden:To avoid restore during publish while creating self-contained applications, do the following:

  • Legen Sie die Eigenschaft RuntimeIdentifiers auf eine durch Semikolons getrennte Liste aller zu veröffentlichenden RIDs fest.Set the RuntimeIdentifiers property to a semicolon-separated list of all the RIDs to be published.
  • Legen Sie die TargetLatestRuntimePatch -Eigenschaft auf truefest.Set the TargetLatestRuntimePatch property to true.

No-restore-Argument mit dotnet publish-OptionenNo-restore argument with dotnet publish options

Wenn Sie sowohl eigenständige Anwendungen und Framework-abhängige Anwendungen mit derselben Projektdatei erstellen und das Argument --no-restore mit dotnet publish verwenden möchten, wählen Sie eine der folgenden Optionen aus:If you want to create both self-contained applications and framework-dependent applications with the same project file, and you want to use the --no-restore argument with dotnet publish, then choose one of the following:

  1. Framework-abhängiges Verhalten bevorzugen.Prefer the framework-dependent behavior. Wenn die Anwendung Framework-abhängig ist, ist dies das Standardverhalten.If the application is framework-dependent, this is the default behavior. Wenn die Anwendung eigenständig ist und eine nicht gepatchte lokale Runtime (2.1.0) verwenden kann, legen Sie false für TargetLatestRuntimePatch in der Projektdatei fest.If the application is self-contained, and can use an unpatched 2.1.0 local runtime, set the TargetLatestRuntimePatch to false in the project file.

  2. Eigenständiges Verhalten bevorzugen.Prefer the self-contained behavior. Wenn die Anwendung eigenständig ist, ist dies das Standardverhalten.If the application is self-contained, this is the default behavior. Wenn die Anwendung Framework-abhängig ist und den neuesten Patch erfordert, legen Sie true für TargetLatestRuntimePatch in der Projektdatei fest.If the application is framework-dependent, and requires the latest patch installed, set TargetLatestRuntimePatch to true in the project file.

  3. Übernehmen Sie die explizite Kontrolle über die Runtime-Framework-Version, indem Sie für RuntimeFrameworkVersion die spezifische Patchversion in der Projektdatei festlegen.Take explicit control of the runtime framework version by setting RuntimeFrameworkVersion to the specific patch version in the project file.