Sdílet prostřednictvím


Dotnet publish používá konfiguraci vydané verze.

Příkaz dotnet 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 se použila konfigurace, dotnet publish pokud nebyla zadána explicitně nebo PublishRelease nebyla nastavena na true.Debug

Vlastnost PublishRelease 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 použije Release se ve výchozím nastavení konfigurace pro projekty, jejichž TargetFramework verze je nastavená net8.0 nebo novější. 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 hodnota PublishRelease implicitně nastavena na true , 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 hodnotou PublishRelease. Pokud je PublishRelease v řešení nastavený falsestarší projekt, měli byste vlastnost false explicitně nastavit 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á.

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 publikování chcete optimalizovat kód a aplikaci můžete zmenšit vyloučením informací o ladění. Zákazníci požádali Release o dlouhou dobu jako výchozí konfiguraci 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é 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 publikování, použijte možnost nebo --configuration možnost -c s dotnet publish.

  • 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 publikujete řešení a je přerušené, můžete explicitně nastavit PublishRelease true (nebo false se vrátit 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 vlastnost false 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 na true (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 nedefinuje PublishRelease. Tato proměnná má vliv na obojí dotnet publish a dotnet pack.

Viz také