Поделиться через


Публикация проекта 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 из командной строки публикации, чтобы разрешить команде публикации восстановить перекрестное создание.