Публикация проекта ReadyToRun с помощью --no-restore требует изменений в восстановлении
Если вы публикуете проект с -p:PublishReadyToRun=true
дополнением --no-restore
, проект будет создавать только с пакетами, которые были восстановлены в предыдущей dotnet restore
операции. В .NET 5 этот процесс работал и привел к перекрестному двоичному файлу. В .NET 6 этот же процесс завершится ошибкой NETSDK1094.
Представленные версии
.NET 6
Прежнее поведение
В предыдущих версиях кроссгенное приложение было упаковано со средой выполнения. В результате кроссгенный процесс мог выполняться в приложении независимо от того, был ли проект восстановлен или нет. Обычно рекомендуется отделять dotnet restore
от dotnet publish
команды публикации, --no-restore
чтобы обеспечить отсутствие дополнительных сетевых доступа.
Новое поведение
В .NET 6, за которым следует dotnet publish -p:PublishReadyToRun=true --no-restore
ошибка dotnet restore
NETSDK1094. Это связано с тем, что перекрестный двоичный файл теперь поставляется в виде отдельного пакета NuGet, поэтому необходимо быть частью операции восстановления для успешной публикации.
Причина изменения
Межгенный двоичный файл не требуется для многих рабочих нагрузок, поэтому он был разделен из основного пакета SDK. Обычно она приобретается по запросу, а целевые объекты публикации MSBuild теперь обрабатывают это приобретение путем добавления пакета в список пакетов для восстановления.
Рекомендуемое действие
- Если вы хотите сохранить изолированный интерфейс публикации, сообщите шагу восстановления о том, что вы будете публиковать ReadyToRun. Также добавьте
-p:PublishReadyToRun=true
в командную строку восстановления. - Или удалите
--no-restore
из командной строки публикации, чтобы разрешить команде публикации восстановить перекрестное создание.