Publikowanie projektu ReadyToRun z poleceniem --no-restore wymaga zmian w przywracaniu
Jeśli opublikujesz projekt z dodatkiem -p:PublishReadyToRun=true
do --no-restore
programu , projekt zostanie skompilowany tylko z pakietami, które zostały przywrócone w poprzedniej dotnet restore
operacji. W programie .NET 5 ten proces zadziałał i spowodowało, że plik binarny crossgen'd. W programie .NET 6 ten sam proces zakończy się niepowodzeniem z powodu błędu NETSDK1094.
Wprowadzona wersja
.NET 6
Poprzednie zachowanie
W poprzednich wersjach aplikacja crossgen została spakowana wraz ze środowiskiem uruchomieniowym. W rezultacie proces crossgen był w stanie uruchomić w aplikacji niezależnie od tego, czy projekt został przywrócony, czy nie. Częstą praktyką było oddzielenie dotnet restore
się od dotnet publish
polecenia publikowania w --no-restore
celu zapewnienia, że nie wystąpiły żadne dodatkowe dostępu do sieci.
Nowe zachowanie
Na platformie .NET 6, dotnet restore
a następnie dotnet publish -p:PublishReadyToRun=true --no-restore
zakończy się niepowodzeniem z powodu błędu NETSDK1094. Dzieje się tak, ponieważ plik binarny crossgen jest teraz dostarczany jako oddzielny pakiet NuGet, dlatego musi być częścią operacji przywracania, aby publikowanie powiodło się.
Przyczyna wprowadzenia zmiany
Plik binarny międzygenowy nie jest wymagany w przypadku wielu obciążeń, więc został podzielony na główny zestaw SDK. Zazwyczaj uzyskuje się go na żądanie, a obiekty docelowe publikowania programu MSBuild obsługują teraz to pozyskiwanie, dodając pakiet do listy pakietów do przywrócenia.
Zalecana akcja
- Jeśli chcesz zachować izolowane środowisko publikowania, poinformuj krok przywracania, że opublikujesz element ReadyToRun. Dodaj
-p:PublishReadyToRun=true
również do wiersza polecenia przywracania. - Możesz też usunąć z
--no-restore
wiersza polecenia publikowania, aby umożliwić również przywracanie crossgenu polecenia publikowania.