Freigeben über


Automatische Laufzeitkennung für bestimmte Projekte

Projekte, die eine der folgenden Eigenschaften angeben, erhalten jetzt automatisch einen Laufzeitbezeichner (RID ). Ein Runtimebezeichner ermöglicht das Veröffentlichen einer eigenständigen Bereitstellung.

  • SelfContained
  • PublishAot
  • PublishReadyToRun
  • PublishSingleFile
  • PublishSelfContained (Nur.NET SDK 7.0.200 und höhere Versionen)

Die folgenden Projekte können von dieser Änderung betroffen sein:

  • Alte Projekte, die den fehlenden Laufzeitbezeichnerfehler umgangen haben.
  • Projekte mit RuntimeIdentifiers, aber ohne RuntimeIdentifier
  • Projekte, die hartcodierte Pfade ohne RIDs verwenden.
  • Projekte, die über diese Eigenschaften verfügt, aber einen Buildvorgang anstelle eines Veröffentlichungsvorgangs verwendet haben, und bei denen es akzeptabel war, dass sich der Veröffentlichungsvorgang in einem fehlerhaften Zustand befindet

Es gibt ggf. noch weitere Nuancen, die in bestimmten Situationen zu Unterbrechungen führen können und uns noch nicht bekannt sind.

Hinweis

Diese Änderung wurde auf den dotnet publish Befehl im .NET 7.0.200 SDK beschränkt. Weitere Informationen finden Sie unter Automatische Runtime-ID nur für die Veröffentlichung.

Eingeführte Version

.NET 7

Vorheriges Verhalten

Bisher scheiterten diese Projekte daran, veröffentlicht zu werden, aufgrund von Fehlern wie:

Es wird nicht unterstützt, eine Anwendung in einer einzelnen Datei zu veröffentlichen, ohne einen RuntimeIdentifier anzugeben. Geben Sie entweder einen RuntimeIdentifier an, oder legen Sie "PublishSingleFile" auf "false" fest.

ODER

fehler NETSDK1031: Es wird nicht unterstützt, eine eigenständige Anwendung zu erstellen oder zu veröffentlichen, ohne einen RuntimeIdentifier anzugeben. Sie müssen entweder einen RuntimeIdentifier angeben oder SelfContained auf "false" festlegen.

In manchen Fällen (etwa PublishSingleFile oder bei spezieller RuntimeIdentifiers-Logik) wurden Projekte möglicherweise ohne RuntimeIdentifier erfolgreich erstellt.

Neues Verhalten

Projekte, die eine der Eigenschaften angeben, die am Anfang dieses Artikels aufgelistet sind, erhalten automatisch ein RuntimeIdentifier. Dieses neue Verhalten kann zu Buildfehlern bei Projekten führen, die RuntimeIdentifiers verwenden, aber nicht RuntimeIdentifier, da RuntimeIdentifier den Ausgabepfad anders als RuntimeIdentifiers beeinflussen kann. Es kann auch zu Fehlern bei AnyCPU-Projekten führen, die PublishSingleFile nutzen, aber bei anderen Aktionen nicht immer einen Runtimebezeichner (RuntimeIdentifier) angeben. Diese Fehler können wie folgt angezeigt werden:

Der Zielprozess wurde beendet, ohne dass ein Ereignis zum Start von CoreCLR ausgelöst wurde. Stellen Sie sicher, dass der Zielprozess für die Verwendung von .NET Core konfiguriert ist.

Art der einschneidenden Änderung

Diese Änderung kann sich auf die Quellkompatibilität auswirken.

Grund für Änderung

Ein Großteil der .NET-Projekte kann nicht veröffentlicht werden, wenn die genannten Eigenschaften verwendet werden, ohne RuntimeIdentifier festzulegen. Durch diese Änderung wird die Notwendigkeit reduziert, das RID jedes Mal manuell hinzuzufügen, wenn Sie die erwähnten Eigenschaften verwenden.

Wenn Ihr Projekt betroffen ist, können Sie die automatische RuntimeIdentifier-Option deaktivieren, indem Sie <UseCurrentRuntimeIdentifier>false</UseCurrentRuntimeIdentifier> zu Ihrer Projektdatei hinzufügen.

Wenn aufgrund der Änderung des Ausgabepfads eine Unterbrechung auftritt, fügen Sie <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> zu Ihrer Projektdatei hinzu.

Siehe auch