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 hodnota PackRelease 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 hodnotou PackRelease.

  • 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 kompatibilituzdroje 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ý.

  • Pokud chcete nové chování úplně zakázat, můžete proměnnou DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE prostředí nastavit na true (nebo jinou hodnotu). Tato proměnná má vliv na obojí dotnet publish a dotnet pack.

  • Chcete-li explicitně zadat Debug konfiguraci pro balení, použijte možnost nebo --configuration možnost -c s dotnet 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ísto Debug, zakažte nové chování pomocí DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE proměnné prostředí nebo určete, že Debug 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 , PackReleaseměli byste explicitně nastavit PackReleasefalse 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 na true (nebo jinou hodnotu) a odebrat regresi. Pokud použijete tuto proměnnou a jakýkoli projekt definuje PackRelease, musí je definovat všechny projekty nebo můžete použít soubor Directory.Build.Props . Tato proměnná má vliv na obojí dotnet publish a dotnet pack.

Viz také