Sdílet prostřednictvím


Publikování projektu ReadyToRun s příkazem --no-restore vyžaduje změny obnovení.

Pokud kromě projektu publikujete projekt -p:PublishReadyToRun=true--no-restore, projekt se sestaví pouze s balíčky, které byly obnoveny v předchozí dotnet restore operaci. V .NET 5 tento proces fungoval a výsledkem byl binární soubor typu crossgen. V rozhraní .NET 6 stejný proces selže s chybou NETSDK1094.

Zavedená verze

.NET 6

Předchozí chování

V předchozích verzích byla aplikace crossgen zabalena s modulem runtime. V důsledku toho byl proces crossgenu schopen spustit ve vaší aplikaci bez ohledu na to, jestli byl projekt obnoven nebo ne. Běžným postupem bylo oddělit dotnet restore se od dotnet publishpříkazu publikování, aby --no-restore se zajistilo, že nedošlo k žádným dalším síťovým přístupům.

Nové chování

V rozhraní .NET 6 dotnet restore , následované chybou dotnet publish -p:PublishReadyToRun=true --no-restore NETSDK1094 selžou. Důvodem je to, že se binární soubor crossgenu dodává jako samostatný balíček NuGet, a proto musí být součástí operace obnovení, aby publikování proběhlo úspěšně.

Důvod změny

Binární soubor crossgenu není nutný pro mnoho úloh, takže byl rozdělen z hlavní sady SDK. Obvykle se získává na vyžádání a publikování cílů MSBuild nyní zpracovává tuto akvizici přidáním balíčku do seznamu balíčků, které se mají obnovit.

  • Pokud chcete zachovat izolované prostředí publikování, sdělte kroku obnovení, že publikujete ReadyToRun. Přidejte -p:PublishReadyToRun=true také příkazový řádek pro obnovení.
  • Nebo odeberte --no-restore příkaz publikování z příkazového řádku publikování a povolte tak obnovení křížového příkazu.