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říkaz dotnet 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 dotnet pack
používal konfiguraci Debug
, pokud nebyla konfigurace zadána explicitně nebo PackRelease
nebylo nastaveno na true
.
VlastnostPackRelease
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
ve výchozí konfiguraci 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 nebyla explicitně zadána konfigurace Debug
(například pomocí dotnet pack --configuration Debug
.
dotnet pack
dokáže najednou zabalit několik cílových identifikátorů rozhraní (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é TFM balí Release
konfiguraci a jiné balí 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 natrue
, 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á.
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 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é 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 balení, použijte možnost-c
nebo--configuration
sdotnet pack
.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 balíte řešení a je přerušené, protože jeden nebo více projektů explicitně nastaví hodnotu
PackRelease
, měli byste explicitně nastavitPackRelease
nafalse
v každém projektu:<PropertyGroup> <PackRelease>false</PackRelease> </PropertyGroup>
Pokud balí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 zabránit 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
.