Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie ein Projekt mit -p:PublishReadyToRun=true
zusätzlich zu --no-restore
veröffentlichen, wird das Projekt nur mit Paketen erstellt, die in einem vorherigen dotnet restore
-Vorgang wiederhergestellt wurden. In .NET 5 funktionierte dieser Prozess und führte zu einer generationsübergreifenden (Crossgen) Binärdatei. In .NET 6 schlägt dieser Prozess mit dem NETSDK1094 Fehler fehl.
Eingeführte Version
.NET 6
Vorheriges Verhalten
In früheren Versionen wurde die generationsübergreifende Anwendung mit der Runtime gepackt. Daher konnte der Crossgen-Prozess unabhängig davon, ob das Projekt wiederhergestellt wurde oder nicht, auf Ihrer Anwendung ausgeführt werden. Es war eine gängige Methode, dotnet restore
von dotnet publish
zu trennen und --no-restore
zum Veröffentlichungsbefehl hinzuzufügen, um zu verhindern, dass zusätzliche Netzwerkzugriffe auftreten.
Neues Verhalten
In .NET 6 tritt bei Verwendung von dotnet restore
gefolgt von dotnet publish -p:PublishReadyToRun=true --no-restore
der Fehler NETSDK1094 auf. Dies liegt daran, dass die crossgen-Binärdatei jetzt als separates NuGet-Paket ausgeliefert wird und daher Teil des Wiederherstellungsvorgangs sein muss, damit die Veröffentlichung erfolgreich ist.
Grund für Änderung
Die Crossgen-Binärdatei ist für viele Workloads nicht erforderlich, daher wurde sie vom Haupt-SDK aufgeteilt. Sie wird in der Regel bedarfsbasiert angefordert, und die MSBuild-Ziele für die Veröffentlichung verarbeiten diese Anforderung jetzt durch Hinzufügen des Pakets zur Liste der wiederherzustellenden Pakete.
Empfohlene Aktion
- Wenn Sie eine isolierte Veröffentlichungsumgebung beibehalten möchten, teilen Sie dem Wiederherstellungsschritt mit, dass Sie ReadyToRun veröffentlichen. Fügen Sie der Befehlszeile für die Wiederherstellung auch
-p:PublishReadyToRun=true
hinzu. - Oder entfernen Sie
--no-restore
aus der Befehlszeile für die Veröffentlichung, damit der Veröffentlichungsbefehl auch generationsübergreifende Dateien wiederherstellen kann.