Dotnet Pack používá konfiguraci vydané verze.
Příkazdotnet pack
, který zabalí kód do balíčku NuGet, teď ve výchozím nastavení používá Release
konfiguraci místo Debug
konfigurace.
Předchozí chování
Dříve se použila konfigurace, dotnet pack
pokud nebyla zadána explicitně nebo PackRelease
nebyla nastavena na true
.Debug
Vlastnost PackRelease
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_PACK_RELEASE_FOR_SOLUTIONS
prostředí nastavit tak, aby se používala PackRelease
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 pack
použije Release
se ve výchozím nastavení konfigurace pro všechny projekty. 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. Kromě toho nebudete moct ladit zabalenou aplikaci, pokud Debug
nebyla explicitně zadána konfigurace (například pomocí dotnet pack --configuration Debug
.
dotnet pack
může najednou zabalit několik cílových monikerů (TFM). Pokud váš projekt cílí na více verzí a pro různé cíle máte různé PackRelease
hodnoty, může dojít ke konfliktu, kdy některé TFMs zabalí Release
konfiguraci a jiné zabalí Debug
konfiguraci.
Projekty v řešení:
dotnet pack
může zabalit všechny projekty v řešení sady Visual Studio, pokud je daný soubor řešení. Pro každý projekt v řešení je hodnotaPackRelease
implicitně nastavena,true
pokud není definována. Aby bylo možnédotnet pack
určit správnou konfiguraci, která se má použít, musí všechny projekty v řešení souhlasit s jejich hodnotouPackRelease
.Tato změna může způsobit snížení výkonu
dotnet pack
, 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_PACK_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 vytváření balíčku chcete, aby byl kód optimalizovaný a balíček může být menší, a to tak, že vyloučíte informace o ladění.
DOTNET_CLI_ENABLE_PACK_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 balení, použijte možnost nebo--configuration
možnost-c
sdotnet pack
.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 zabalíte řešení a je přerušené, protože jeden nebo více projektů explicitně nastaví hodnotu ,
PackRelease
měli byste explicitně nastavitPackRelease
false
v každém projektu:<PropertyGroup> <PackRelease>false</PackRelease> </PropertyGroup>
Pokud zabalíte ř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 použijete tuto proměnnou a jakýkoli projekt definujePackRelease
, musí je definovat všechny projekty nebo můžete použít soubor Directory.Build.Props . Tato proměnná má vliv na obojídotnet publish
adotnet pack
.