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 pack Befehl, der Code in ein NuGet-Paket packt, verwendet nun standardmäßig die Release Konfiguration anstelle der Debug Konfiguration.
Vorheriges Verhalten
Zuvor hat dotnet pack die Debug Konfiguration verwendet, es sei denn, die Konfiguration wurde explizit angegeben oder PackRelease auf true gesetzt.
Die PackRelease Eigenschaft wurde in .NET 7 als Pfad zu dieser bahnbrechenden Änderung hinzugefügt. Zuvor konnten Sie die Umgebungsvariable DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS auf die Verwendung von PackRelease 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, dotnet pack wird die Release Konfiguration standardmäßig für alle Projekte verwendet. 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. Außerdem können Sie keine verpackte App debuggen, es sei denn, die Debug Konfiguration wurde explizit angegeben (z. B. die Verwendung dotnet pack --configuration Debug.
dotnet pack kann für mehrere Zielframeworkmoniker (TFM) gleichzeitig packen. Wenn Ihr Projekt auf mehrere Versionen ausgerichtet ist und Sie unterschiedliche PackRelease Werte für unterschiedliche Ziele haben, können Sie einen Konflikt haben, bei dem einige TFMs die Release Konfiguration packen und andere die Debug Konfiguration packen.
Für Projekte innerhalb einer Softwarelösung:
dotnet packkann alle Projekte in einer Visual Studio-Projektmappe packen, wenn eine Projektmappendatei angegeben wird. Für jedes Projekt in der Lösung wird der WertPackReleaseimplizit auftruegesetzt, wenn er nicht definiert ist. Umdotnet packdie richtige zu verwendende Konfiguration zu ermitteln, müssen sich alle Projekte in der Lösung auf ihren WertPackReleaseeinigen.Diese Änderung könnte dazu führen, dass die Leistung von
dotnet packnachlassen 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_PACK_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, wenn Sie ein Paket erstellen, möchten Sie, dass Ihr Code optimiert wird und Sie das Paket kleiner halten können, indem Sie Debuginformationen ausschließen.
Die DOTNET_CLI_ENABLE_PACK_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 Konfiguration für die
DebugVerpackung explizit angeben möchten, verwenden Sie die-c- oder--configuration-Option mitdotnet pack.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 packen und sie nicht funktioniert, weil eines oder mehrere Projekte explizit einen Wert für
PackReleasefestlegen, sollten Sie in jedem Projekt explizitPackReleaseauffalsesetzen.<PropertyGroup> <PackRelease>false</PackRelease> </PropertyGroup>Wenn Sie eine Lösung packen und die Leistung gesunken ist, können Sie die Umgebungsvariable
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSauftrue(oder einen anderen Wert) festlegen, um den Leistungsabfall zu beseitigen. Wenn Sie diese Variable verwenden und ein ProjektPackReleasedefiniert, müssen alle Projekte dies tun, oder Sie können eine Datei "Directory.Build.Props" verwenden. Diese Variable wirkt sich auf beidedotnet publishunddotnet pack.
Siehe auch
- „dotnet publish“ verwendet die Release-Konfiguration.