Udostępnij za pośrednictwem


Publikowanie projektu ReadyToRun z poleceniem --no-restore wymaga zmian w przywracaniu

Jeśli opublikujesz projekt z dodatkiem -p:PublishReadyToRun=true do --no-restoreprogramu , 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 publishpolecenia 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.

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