Condividi tramite


La pubblicazione di un progetto ReadyToRun con --no-restore richiede modifiche al ripristino

Se si pubblica un progetto con -p:PublishReadyToRun=true oltre a --no-restore, il progetto verrà compilato solo con i pacchetti ripristinati in un'operazione dotnet restore precedente. In .NET 5 questo processo ha funzionato e ha generato un file binario incrociato. In .NET 6 lo stesso processo avrà esito negativo restituendo l'errore NETSDK1094.

Versione introdotta

.NET 6

Comportamento precedente

Nelle versioni precedenti, l'applicazione crossgen è stata inserita in un pacchetto con il runtime. Di conseguenza, il processo crossgen è stato in grado di essere eseguito nell'applicazione indipendentemente dal fatto che il progetto venisse ripristinato o meno. Era pratica comune separare dotnet restore da dotnet publish, aggiungendo --no-restore al comando di pubblicazione per far sì che non si verificassero accessi di rete aggiuntivi.

Nuovo comportamento

In .NET 6, dotnet restore seguito da dotnet publish -p:PublishReadyToRun=true --no-restore avrà esito negativo restituendo l'errore NETSDK1094. Ciò è dovuto al fatto che il file binario crossgen viene ora fornito come pacchetto NuGet separato e quindi deve far parte dell'operazione di ripristino perché la pubblicazione abbia esito positivo.

Motivo della modifica

Il file binario crossgen non è necessario per molti carichi di lavoro, quindi è stato suddiviso dall'SDK principale. Viene in genere acquisito su richiesta e le destinazioni MSBuild di pubblicazione gestiscono ora tale acquisizione aggiungendo il pacchetto all'elenco di pacchetti da ripristinare.

  • Se si vuole mantenere un'esperienza di pubblicazione isolata, indicare al passaggio di ripristino che si effettuerà la pubblicazione ReadyToRun. Aggiungere -p:PublishReadyToRun=true anche alla riga di comando di ripristino.
  • In alternativa, rimuovere --no-restore dalla riga di comando di pubblicazione per consentire al comando pubblica di ripristinare anche crossgen.