Share via


Publicar um projeto ReadyToRun com --no-restore requer alterações na restauração

Se você publicar um projeto com -p:PublishReadyToRun=true além de --no-restore, o projeto será compilado apenas com pacotes que foram restaurados em uma operação dotnet restore anterior. No .NET 5, esse processo funcionava e resultava em um binário crossgen'd. No .NET 6, esse mesmo processo falhará com o erro NETSDK1094.

Versão introduzida

.NET 6

Comportamento anterior

Nas versões anteriores, o aplicativo crossgen era empacotado com o runtime. Como resultado, o processo de crossgen era capaz de ser executado em seu aplicativo, independentemente de o projeto ter sido restaurado ou não. Era uma prática comum separar dotnet restore de dotnet publish, adicionando --no-restore ao comando de publicação para garantir que nenhum acesso adicional à rede ocorresse.

Novo comportamento

No .NET 6, dotnet restore seguido por dotnet publish -p:PublishReadyToRun=true --no-restore, falhará com o erro de NETSDK1094. Isso ocorre porque o binário crossgen agora é enviado como um pacote NuGet separado e, portanto, precisa fazer parte da operação de restauração para que a publicação tenha êxito.

Motivo da alteração

O binário crossgen não é necessário em muitas cargas de trabalho, portanto, ele foi separado do SDK principal. Normalmente, ele é adquirido sob demanda, e as metas de publicação do MSBuild agora lidam com essa aquisição adicionando o pacote à lista de pacotes a serem restaurados.

  • Se você quiser manter uma experiência de publicação isolada, informe à etapa de restauração que publicará ReadyToRun. Adicione -p:PublishReadyToRun=true à linha de comando de restauração também.
  • Ou remova --no-restore da linha de comando de publicação para permitir que o comando de publicação restaure o crossgen também.