Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Příkazdotnet 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 dotnet publish
používal konfiguraci Debug
, pokud nebyla konfigurace zadána explicitně nebo PublishRelease
nebylo nastaveno na true
.
VlastnostPublishRelease
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
ve výchozím nastavení použije konfiguraci Release
pro projekty, jejichž TargetFramework
je nastaveno na net8.0
nebo novější verzi. 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 je v řešení starší projekt s nastavenímPublishRelease
nafalse
, měli byste tuto vlastnostfalse
explicitně nastavit i 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á.
Verze byla představena
.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 si dlouhou dobu přáli, aby Release
byla výchozí konfigurace pro 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é umožňovala, je nyní výchozím chováním a detailní kontrola 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-c
nebo--configuration
sdotnet publish
.Pokud je kanál CI/CD přerušený kvůli pevně zakódovaným výstupním cestám, aktualizujte cesty na
Release
místoDebug
, zakázat nové chování pomocí proměnné prostředíDOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
nebo určete, že by se měla použít konfiguraceDebug
.Pokud publikujete řešení a je rozbité, můžete explicitně nastavit
PublishRelease
natrue
(nebofalse
pro návrat 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
.