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.
Der dotnet publish Befehl verwendet jetzt die Release Konfiguration anstelle der Debug Konfiguration standardmäßig, wenn das Zielframework .NET 8 oder eine höhere Version ist.
Vorheriges Verhalten
Zuvor hat dotnet publish die Debug Konfiguration verwendet, es sei denn, die Konfiguration wurde explizit angegeben oder PublishRelease auf true gesetzt.
Die PublishRelease Eigenschaft wurde in .NET 7 als Pfad zu dieser bahnbrechenden Änderung hinzugefügt. Zuvor konnten Sie die Umgebungsvariable DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS auf die Verwendung von PublishRelease in einem Projekt festlegen, das Teil einer Visual Studio-Projektmappe war.
Neues Verhalten
Wenn Sie mit dem .NET 8 SDK oder einer höheren Version entwickeln, wird die dotnet publish Konfiguration standardmäßig für Projekte verwendet, Release deren TargetFramework Version auf net8.0 oder höher festgelegt ist. Wenn Sie über ein CI/CD-Skript, Tests oder Code verfügen, in denen Sie Debug fest in einem Ausgabepfad kodiert haben, kann diese Änderung Ihren Workflow unterbrechen.
Wenn Ihr Projekt auf mehrere Versionen ausgerichtet ist, gilt das neue Verhalten nur, wenn Sie ein Zielframework von .NET 8 oder höher angeben, wenn Sie veröffentlichen (z. B. mit dotnet publish -f net8.0).
Für Projekte innerhalb einer Softwarelösung:
dotnet publishkann alle Projekte in einer Visual Studio-Projektmappe veröffentlichen, wenn eine Projektmappendatei angegeben wird. Für die Lösungsprojekte, die auf .NET 8 oder höher abzielen, wird der WertPublishReleaseimplizit auftruefestgelegt, wenn er nicht definiert ist. Umdotnet publishjedoch die richtige Konfiguration zu ermitteln, die für die Lösung verwendet werden soll, müssen sich alle Projekte in der Lösung auf ihren WertPublishReleaseeinigen. Wenn für ein älteres Projekt in der ProjektmappePublishReleaseauffalsefestgelegt ist, sollten Sie die Eigenschaft auch für alle neuen .NET 8+-Projekte explizit auffalsefestlegen.Diese Änderung könnte dazu führen, dass die Leistung von
dotnet publishnachlassen könnte, insbesondere bei Lösungen, die viele Projekte enthalten. Um dies zu beheben, wurde eine neue UmgebungsvariableDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSeingeführt.Die Umgebungsvariable
DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONSwird nicht mehr erkannt.
Eingeführte Version
.NET 8 Preview 1
Art der einschneidenden Änderung
Diese Änderung kann sich auf die Quellkompatibilität auswirken und ist auch eine Verhaltensänderung.
Grund für Änderung
In den meisten Fällen möchten Sie, dass Ihr Code optimiert wird und die App kleiner bleibt, indem Sie Debuginformationen ausschließen. Die Kunden haben schon lange gebeten, dass Release die Standardkonfiguration für publish wird. Außerdem hat Visual Studio dieses Verhalten seit vielen Jahren.
Die DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS Umgebungsvariable wurde entfernt, da das aktivierte Verhalten nun das Standardverhalten ist und das granulare Steuerelement nicht mehr erforderlich ist.
Empfohlene Aktion
Um das neue Verhalten vollständig zu deaktivieren, können Sie die
DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEUmgebungsvariable auftrue(oder einen anderen Wert) festlegen. Diese Variable wirkt sich auf beidedotnet publishunddotnet pack.Wenn Sie die
DebugKonfiguration für die Veröffentlichung explizit angeben möchten, verwenden Sie die-coder--configurationOption mitdotnet publish.Wenn Ihre CI/CD-Pipeline aufgrund hartcodierter Ausgabepfade unterbrochen wird, aktualisieren Sie die Pfade
ReleaseanstelleDebug, deaktivieren Sie das neue Verhalten mithilfe derDOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEUmgebungsvariable, oder geben Sie an, dass dieDebugKonfiguration verwendet werden soll.Wenn Sie eine Lösung veröffentlichen und diese fehlerhaft ist, können Sie
PublishReleaseexplizit auftruefestlegen (oderfalsezurücksetzen, um wieder das vorherige Verhalten zu nutzen).<PropertyGroup> <PublishRelease>true</PublishRelease> </PropertyGroup>Alternativ können Sie die Eigenschaft in einer Datei "Directory.Build.Props " angeben. Wenn Sie sie jedoch in dieser Datei auf
falsefestlegen, müssen Sie die Eigenschaft dennoch in den .NET 8+-Projekten in der Projektmappe explizit auffalsefestlegen. Wenn einige Projekte einen Wert explizit festlegen, der sich vom Wert in der Datei "Directory.Build.Props " unterscheidet, schlägt die Veröffentlichung fehl.Wenn Sie eine Lösung veröffentlichen und die Leistung sich verschlechtert hat, können Sie die
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSUmgebungsvariable auftrue(oder einen anderen Wert) festlegen, um die Regression zu beheben. Wenn Sie diese Variable festlegen und Ihre Lösung jedoch ein .NET 8+-Projekt und ein Projekt enthält, das auf .NET 7 oder früher ausgerichtet ist, schlägt die Veröffentlichung fehl, bis alle Projekte definiert sindPublishRelease. Diese Variable wirkt sich auf beidedotnet publishunddotnet pack.