La publication d’un projet ReadyToRun avec --no-restore nécessite de changer la restauration
Si vous publiez un projet avec -p:PublishReadyToRun=true
en plus de --no-restore
, le projet est généré seulement avec des packages qui ont été restaurés dans une opération dotnet restore
précédente. Dans .NET 5, ce processus fonctionnait et aboutissait à un binaire cross-gen. Dans .NET 6, ce même processus échoue avec l’erreur NETSDK1094.
Version introduite
.NET 6
Comportement précédent
Dans les versions précédentes, l’application cross-gen était packagée avec le runtime. Par conséquent, le processus cross-gen pouvait s’exécuter sur votre application, que le projet ait été restauré ou non. Il était courant de séparer dotnet restore
de dotnet publish
, en ajoutant --no-restore
à la commande publish pour qu’il n’y ait aucun accès réseau supplémentaire.
Nouveau comportement
Dans .NET 6, dotnet restore
suivi de dotnet publish -p:PublishReadyToRun=true --no-restore
échoue avec l’erreur NETSDK1094. C’est parce que le fichier binaire cross-gen est désormais fourni dans un package NuGet distinct et doit donc faire partie de l’opération de restauration pour que la publication réussisse.
Raison du changement
Le binaire cross-gen n’étant pas nécessaire pour de nombreuses charges de travail, il a été séparé du SDK principal. Il est généralement acquis à la demande, et les cibles MSBuild de publication gèrent désormais cette acquisition en ajoutant le package à la liste des packages à restaurer.
Action recommandée
- Si vous voulez maintenir une expérience de publication isolée, indiquez à l’étape de restauration que vous publiez ReadyToRun. Ajoutez
-p:PublishReadyToRun=true
également à votre ligne de commande de restauration. - Vous pouvez également supprimer
--no-restore
de votre ligne de commande de publication pour permettre à la commande publish de restaurer également le binaire cross-gen.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour