Polecenie "dotnet publish" używa konfiguracji wydania
Polecenie dotnet publish
teraz używa Release
konfiguracji zamiast Debug
konfiguracji domyślnie, jeśli platforma docelowa to .NET 8 lub nowsza wersja.
Poprzednie zachowanie
Wcześniej użyto konfiguracji, dotnet publish
chyba że konfiguracja została określona jawnie lub PublishRelease
została ustawiona na true
.Debug
Właściwość PublishRelease
została dodana na platformie .NET 7 jako ścieżka do tej zmiany powodującej niezgodność. Wcześniej można było ustawić zmienną DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
środowiskową do użycia PublishRelease
w projekcie, który był częścią rozwiązania programu Visual Studio.
Nowe zachowanie
Jeśli programujesz przy użyciu zestawu .NET 8 SDK lub nowszej wersji, dotnet publish
domyślnie używa Release
konfiguracji dla projektów, których TargetFramework
wersja jest ustawiona na net8.0
lub nowszą. Jeśli masz skrypt ciągłej integracji/ciągłego wdrażania, testy lub kod, w którym kod został zakodowany Debug
na stałe w ścieżce wyjściowej, ta zmiana może spowodować przerwanie przepływu pracy.
Jeśli projekt jest przeznaczony dla wielu wersji, nowe zachowanie ma zastosowanie tylko wtedy, gdy określisz platformę docelową platformy .NET 8 lub nowszą podczas publikowania (na przykład przy użyciu polecenia dotnet publish -f net8.0
).
W przypadku projektów w rozwiązaniu:
dotnet publish
program może opublikować wszystkie projekty w rozwiązaniu programu Visual Studio, jeśli zostanie podany plik rozwiązania. W przypadku projektów rozwiązań przeznaczonych dla platformy .NET 8 lub nowszejPublishRelease
wartość jest niejawnie ustawiona natrue
, jeśli jest niezdefiniowana. Jednak abydotnet publish
określić poprawną konfigurację do użycia dla rozwiązania, wszystkie projekty w rozwiązaniu muszą uzgodnić ich wartośćPublishRelease
. Jeśli starszy projekt w rozwiązaniu maPublishRelease
ustawioną wartośćfalse
, należy jawnie ustawić właściwość nafalse
dla wszystkich nowych projektów .NET 8+.Ta zmiana może spowodować regresję
dotnet publish
wydajności, zwłaszcza w przypadku rozwiązań zawierających wiele projektów. Aby rozwiązać ten problem, wprowadzono nową zmienną środowiskowąDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
.Zmienna
DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
środowiskowa nie jest już rozpoznawana.
Wprowadzona wersja
.NET 8 (wersja zapoznawcza 1)
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność źródła i jest również zmianą behawioralną.
Przyczyna wprowadzenia zmiany
W większości przypadków podczas publikowania chcesz, aby kod był optymalizowany i może zachować mniejszy rozmiar aplikacji, wykluczając informacje debugowania. Klienci poprosili o Release
ustawienie domyślnej konfiguracji przez publish
długi czas. Ponadto program Visual Studio od wielu lat ma to zachowanie.
Zmienna DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
środowiskowa została usunięta, ponieważ włączone zachowanie jest teraz zachowaniem domyślnym, a szczegółowa kontrolka nie jest już konieczna.
Zalecana akcja
Aby całkowicie wyłączyć nowe zachowanie, możesz ustawić zmienną
DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
środowiskową natrue
(lub dowolną inną wartość). Ta zmienna ma wpływ zarówno na , jakdotnet publish
idotnet pack
.Aby jawnie określić konfigurację publikowania
Debug
, użyj-c
opcji lub--configuration
z opcjądotnet publish
.Jeśli potok ciągłej integracji/ciągłego wdrażania jest uszkodzony z powodu zakodowanych na stałe ścieżek wyjściowych, zaktualizuj ścieżki
Release
zamiastDebug
, wyłącz nowe zachowanie przy użyciuDOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
zmiennej środowiskowej lub określ, czyDebug
konfiguracja powinna być używana.Jeśli publikujesz rozwiązanie i jest ono uszkodzone, możesz jawnie ustawić
PublishRelease
wartośćtrue
(lubfalse
przywrócić poprzednie zachowanie).<PropertyGroup> <PublishRelease>true</PublishRelease> </PropertyGroup>
Alternatywnie można określić właściwość w pliku Directory.Build.Props . Jeśli jednak ustawisz go
false
w tym pliku, nadal musisz jawnie ustawić właściwość nafalse
w projektach .NET 8+ w rozwiązaniu. Podobnie jeśli niektóre projekty jawnie ustawią wartość inną niż wartość w pliku Directory.Build.Props , publikowanie zakończy się niepowodzeniem.Jeśli publikujesz rozwiązanie i wydajność uległa pogorszeniu, możesz ustawić
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
zmienną środowiskową natrue
(lub dowolną inną wartość), aby usunąć regresję. Jeśli jednak ustawisz tę zmienną, a rozwiązanie zawiera projekt .NET 8+ i projekt przeznaczony dla platformy .NET 7 lub starszej wersji, publikowanie zakończy się niepowodzeniem, dopóki wszystkie projekty nie zdefiniująPublishRelease
elementu . Ta zmienna ma wpływ zarówno na , jakdotnet publish
idotnet pack
.