Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
El comando dotnet pack, que empaqueta el código en un paquete NuGet, ahora usa la Release configuración en lugar de la Debug configuración de forma predeterminada.
Comportamiento anterior
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ías configurar la DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS variable de entorno para usar PackRelease en un proyecto que formaba parte de una solución de Visual Studio.
Nuevo comportamiento
Si está desarrollando con el SDK de .NET 8 o una versión posterior, dotnet pack usa la Release configuración 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 Releasey otros la Debug.
En proyectos en una solución puede ocurrir lo siguiente:
dotnet packpuede empaquetar todos los proyectos de una solución de Visual Studio si se proporciona un archivo de solución. Para cada proyecto de la solución, el valor dePackReleasese establece implícitamente entruesi no está definido. Para quedotnet packdetermine la configuración correcta a usar, todos los proyectos de la solución deben coincidir en su valor dePackRelease.Este cambio puede provocar la regresión del rendimiento de
dotnet pack, especialmente para las soluciones que contienen muchos proyectos. Para solucionar esto, se ha introducido una nueva variableDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSde entorno.La
DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONSvariable de entorno ya no se reconoce.
Versión introducida
.NET 8 Preview 1
Tipo de cambio disruptivo
Este cambio puede afectar a la compatibilidad de origen y también es un cambio de comportamiento.
Motivo del cambio
En la mayoría de los casos, cuando crea un paquete, quiere que su código esté optimizado y pueda hacer que el paquete sea más pequeño al excluir la información de depuración.
La DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS variable de entorno se quitó porque el comportamiento que ha habilitado es ahora el comportamiento predeterminado y el control granular ya no es necesario.
Acción recomendada
Para deshabilitar completamente el nuevo comportamiento, puede establecer la
DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEvariable de entorno entrue(o en cualquier otro valor). Esta variable afecta tanto adotnet publishcomo adotnet pack.Para especificar explícitamente la configuración
Debugpara el empaquetado, use la opción-co--configurationcondotnet pack.Si la canalización de CI/CD se interrumpe debido a rutas de salida codificadas, actualice las rutas de acceso a
Releaseen lugar deDebug, deshabilite el nuevo comportamiento mediante la variable de entornoDOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEo especifique que se debe usar la configuraciónDebug.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ícitamentePackReleaseenfalseen cada proyecto:<PropertyGroup> <PackRelease>false</PackRelease> </PropertyGroup>Si estás empaquetando una solución y el rendimiento ha empeorado, puedes establecer la variable de entorno
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSatrue(o cualquier otro valor) para eliminar la regresión. Si usa esta variable y cualquier proyecto definePackRelease, todos los proyectos deben definirla o puede usar un archivo Directory.Build.Props . Esta variable afecta tanto adotnet publishcomo adotnet pack.