Eventos
Cree aplicaciones inteligentes
17 mar, 11 p.m. - 21 mar, 11 p.m.
Únete a la serie de encuentros para crear soluciones de IA escalables basadas en casos de uso del mundo real con otros desarrolladores y expertos.
Regístrese ahoraEste explorador ya no es compatible.
Actualice a Microsoft Edge para aprovechar las características, las actualizaciones de seguridad y el soporte técnico más recientes.
El comando dotnet pack
, que empaqueta el código en un paquete NuGet, ahora usa la configuración Release
en lugar de la Debug
de forma predeterminada.
Anteriormente, dotnet pack
usaba la configuración Debug
a menos que la configuración se especificara explícitamente o PackRelease
se estableciera en true
.
La propiedad PackRelease
se agregó en .NET 7 como una ruta de acceso hacia este cambio importante. Anteriormente, podía establecer la variable de entorno DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
para que usará PackRelease
en un proyecto que formara parte de una solución de Visual Studio.
Si está desarrollando con el SDK de .NET 8 o una versión posterior, dotnet pack
usa la configuración Release
de forma predeterminada para todos los proyectos. Si tiene un script de CI/CD, pruebas o código donde Debug
se ha codificado de forma rígida en una ruta de acceso de salida, este cambio puede interrumpir el flujo de trabajo. Además, no podrá depurar una aplicación empaquetada a menos que la configuración Debug
se especifique explícitamente (por ejemplo, mediante dotnet pack --configuration Debug
).
dotnet pack
puede empaquetar para varios moniker de la plataforma de destino (TFM) al mismo tiempo. Si el proyecto tiene como destino varias versiones y tiene valores PackRelease
diferentes para distintos destinos, puede tener un conflicto en el que algunos TFMs empaquetan la configuración Release
y otros la Debug
.
En proyectos en una solución puede ocurrir lo siguiente:
dotnet pack
puede empaquetar todos los proyectos en una solución de Visual Studio si se proporciona un archivo de solución. Para cada proyecto de la solución, el valor de PackRelease
se establece implícitamente en true
si no está definido. Para que dotnet pack
determine la configuración correcta que se va a usar, todos los proyectos de la solución deben aceptar su valor de PackRelease
.
Este cambio puede provocar la regresión del rendimiento de dotnet pack
, especialmente para las soluciones que contienen muchos proyectos. Para solucionarlo, se ha introducido una nueva variable de entorno DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
.
La variable de entorno DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
ya no se reconoce.
.NET 8 Preview 1
Este cambio puede afectar a la compatibilidad de origen y también es un cambio de comportamiento.
En la mayoría de los casos al crear un paquete, quiere que el código se optimice y pueda mantener el paquete más pequeño excluyendo la información de depuración.
La variable de entorno DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
se quitó porque el comportamiento que ha habilitado es ahora el predeterminado y el control granular ya no es necesario.
Para deshabilitar completamente el comportamiento nuevo, puede establecer la variable de entorno DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
en true
(o en cualquier otro valor). Esta variable afecta tanto a dotnet publish
como a dotnet pack
.
Para especificar explícitamente la configuración Debug
para el empaquetado, use la opción -c
o --configuration
con dotnet pack
.
Si la canalización de CI/CD se interrumpe debido a rutas de salida codificadas, actualice las rutas a Release
en lugar de Debug
, deshabilite el comportamiento nuevo mediante la variable de entorno DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
o especifique que se debe usar la configuración Debug
.
Si va a empaquetar una solución y se interrumpe porque uno o varios proyectos establecen explícitamente un valor para PackRelease
, debe establecer explícitamente PackRelease
en false
en cada proyecto:
<PropertyGroup>
<PackRelease>false</PackRelease>
</PropertyGroup>
Si va a empaquetar una solución y el rendimiento ha realizado una regresión, puede establecer la variable de entorno DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
en true
(o en cualquier otro valor) para quitarla. Si usa esta variable y cualquier proyecto define PackRelease
, todos los proyectos deben definirla, o puede usar un archivo Directory.Build.Props. Esta variable afecta tanto a dotnet publish
como a dotnet pack
.
Comentarios de .NET
.NET es un proyecto de código abierto. Selecciona un vínculo para proporcionar comentarios:
Eventos
Cree aplicaciones inteligentes
17 mar, 11 p.m. - 21 mar, 11 p.m.
Únete a la serie de encuentros para crear soluciones de IA escalables basadas en casos de uso del mundo real con otros desarrolladores y expertos.
Regístrese ahoraFormación
Módulo
Publish an ASP.NET Core app - Training
Learn how to publish an ASP.NET Core app for deployment to a web server or cloud service.
Documentación
El comando dotnet pack crea paquetes NuGet para el proyecto de .NET.
Cambio importante: "dotnet publish" usa la configuración Release - .NET
Descubra un cambio importante en el SDK de .NET 8, en el que "dotnet publish" usa la configuración "Release" de forma predeterminada.
Comando dotnet build - .NET CLI
El comando dotnet build compila un proyecto y todas sus dependencias.