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 publish
pří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.
Doporučená akce
- 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.