La publicación de un proyecto ReadyToRun con --no-restore requiere cambios en la restauración
Si publica un proyecto con -p:PublishReadyToRun=true
además de --no-restore
, el proyecto solo se compilará con paquetes que se restauraron en una operación anterior dotnet restore
. En .NET 5, este proceso funcionó y dio lugar a un binario de crossgen'd. En .NET 6, este mismo proceso dará el error NETSDK1094.
Versión introducida
.NET 6
Comportamiento anterior
En versiones anteriores, la aplicación crossgen se empaquetaba con el runtime. Como resultado, el proceso crossgen se pudo ejecutar en la aplicación independientemente de si el proyecto se había restaurado o no. Era una práctica común separar dotnet restore
de dotnet publish
, agregar --no-restore
al comando de publicación para asegurarse de que no se ha producido ningún acceso de red adicional.
Comportamiento nuevo
En .NET 6, dotnet restore
seguido de dotnet publish -p:PublishReadyToRun=true --no-restore
producirá el error NETSDK1094. Esto se debe a que el binario crossgen ahora se incluye como un paquete NuGet independiente, por lo que debe formar parte de la operación de restauración para que la publicación se realice correctamente.
Motivo del cambio
El binario crossgen no es necesario para muchas cargas de trabajo, por lo que fue separado del SDK principal. Normalmente se adquiere bajo demanda y los destinos de MSBuild de publicación ahora controlan esta adquisición agregando el paquete a la lista de paquetes que se van a restaurar.
Acción recomendada
- Si desea mantener una experiencia de publicación aislada, indique al paso de restauración que va a publicar ReadyToRun. Agregue
-p:PublishReadyToRun=true
también a la línea de comandos de restauración. - O bien quite
--no-restore
de la línea de comandos de publicación para permitir que el comando de publicación restaure también el crossgen.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de