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 precedente dotnet restore . In .NET 5 questo processo ha funzionato e ha generato un file binario incrociato. In .NET 6 lo stesso processo avrà esito negativo con 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 sia stato ripristinato o meno. È stata pratica comune separare dotnet restore da dotnet publish, aggiungendo --no-restore al comando di pubblicazione per assicurarsi che non si siano verificati accessi di rete aggiuntivi.

Nuovo comportamento

In .NET 6, dotnet restore seguito da dotnet publish -p:PublishReadyToRun=true --no-restore restituirà 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 per la pubblicazione.

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 gli obiettivi di pubblicazione MSBuild ora si occupano di gestire questa acquisizione aggiungendo il pacchetto all'elenco dei pacchetti da ripristinare.

  • Se vuoi mantenere un'esperienza di pubblicazione isolata, informa al passaggio di ripristino che pubblicherai 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 publish di ripristinare anche crossgen.