Sdílet prostřednictvím


Dotnet Pack používá konfiguraci Release.

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 hodnota PackRelease implicitně nastavena na 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á.

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á.

  • 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 -c nebo --configuration 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 na Release místo Debug, 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 konfigurace Debug.

  • 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ě nastavit PackRelease na false 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 na true (nebo jinou hodnotu) a zabránit 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é