Dotnet publish používá konfiguraci vydané verze.
Příkaz dotnet publish
teď používá Release
konfiguraci místo Debug
konfigurace ve výchozím nastavení, pokud je cílovou architekturou .NET 8 nebo novější verze.
Předchozí chování
Dříve se použila konfigurace, dotnet publish
pokud nebyla zadána explicitně nebo PublishRelease
nebyla nastavena na true
.Debug
Vlastnost PublishRelease
byla přidána v .NET 7 jako cesta vpřed k této zásadní změně. Dříve jste mohli proměnnou DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
prostředí nastavit tak, aby se používala PublishRelease
v projektu, který byl součástí řešení sady Visual Studio.
Nové chování
Pokud vyvíjíte pomocí sady .NET 8 SDK nebo novější verze, dotnet publish
použije Release
se ve výchozím nastavení konfigurace pro projekty, jejichž TargetFramework
verze je nastavená net8.0
nebo novější. Pokud máte skript CI/CD, testy nebo kód, ve kterém jste pevně zakódovali Debug
výstupní cestu, může tato změna narušit váš pracovní postup.
Pokud váš projekt cílí na více verzí, použije se nové chování pouze v případě, že při publikování zadáte cílovou architekturu .NET 8 nebo novější (například pomocí dotnet publish -f net8.0
).
Projekty v řešení:
dotnet publish
může publikovat všechny projekty v řešení sady Visual Studio, pokud je daný soubor řešení. Pro projekty řešení, které cílí na .NET 8 nebo novější, je hodnotaPublishRelease
implicitně nastavena natrue
, pokud není definována. Aby však bylo možnédotnet publish
určit správnou konfiguraci pro řešení, musí všechny projekty v řešení souhlasit s jejich hodnotouPublishRelease
. Pokud jePublishRelease
v řešení nastavenýfalse
starší projekt, měli byste vlastnostfalse
explicitně nastavit pro všechny nové projekty .NET 8 nebo novější.Tato změna může způsobit snížení výkonu
dotnet publish
, zejména u řešení, která obsahují mnoho projektů. Abychom to vyřešili, zavedla se nová proměnnáDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
prostředí.Proměnná
DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
prostředí se už nerozpozná.
Zavedená verze
.NET 8 Preview 1
Typ zásadní změny
Tato změna může mít vliv na kompatibilitu zdroje a je to také změna chování.
Důvod změny
Ve většině případů při publikování chcete optimalizovat kód a aplikaci můžete zmenšit vyloučením informací o ladění. Zákazníci požádali Release
o dlouhou dobu jako výchozí konfiguraci publish
. Visual Studio toto chování mělo také mnoho let.
DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
Proměnná prostředí byla odebrána, protože chování, které je povoleno, je nyní výchozím chováním a podrobný ovládací prvek už není nutný.
Doporučená akce
Pokud chcete nové chování úplně zakázat, můžete proměnnou
DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
prostředí nastavit natrue
(nebo jinou hodnotu). Tato proměnná má vliv na obojídotnet publish
adotnet pack
.Chcete-li explicitně zadat
Debug
konfiguraci pro publikování, použijte možnost nebo--configuration
možnost-c
sdotnet publish
.Pokud je kanál CI/CD přerušený kvůli pevně zakódovaným výstupním cestám, aktualizujte cesty
Release
místoDebug
, zakažte nové chování pomocíDOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
proměnné prostředí nebo určete, žeDebug
by se měla použít konfigurace.Pokud publikujete řešení a je přerušené, můžete explicitně nastavit
PublishRelease
true
(nebofalse
se vrátit k předchozímu chování).<PropertyGroup> <PublishRelease>true</PublishRelease> </PropertyGroup>
Případně můžete zadat vlastnost v souboru Directory.Build.Props . Pokud ho ale nastavíte
false
v tomto souboru, budete muset vlastnostfalse
explicitně nastavit v projektech .NET 8+ v řešení. Podobně pokud některé projekty explicitně nastaví hodnotu, která se liší od hodnoty v souboru Directory.Build.Props , publikování selže.Pokud publikujete řešení a výkon se snižuje, můžete proměnnou prostředí nastavit
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
natrue
(nebo jinou hodnotu) a odebrat regresi. Pokud ale nastavíte tuto proměnnou a vaše řešení obsahuje projekt .NET 8+ a projekt, který cílí na .NET 7 nebo starší, publikování selže, dokud všechny projekty nedefinujePublishRelease
. Tato proměnná má vliv na obojídotnet publish
adotnet pack
.