Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La dotnet pack commande, qui intègre du code dans un package NuGet, utilise désormais la Release configuration au lieu de la Debug configuration par défaut.
Comportement précédent
Auparavant, dotnet pack utilisait la configuration Debug, à moins que la configuration n'ait été spécifiée explicitement ou que PackRelease ait été définie à true.
La PackRelease propriété a été ajoutée dans .NET 7 comme solution à ce changement radical. Auparavant, vous pouviez définir la DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS variable d’environnement à utiliser PackRelease dans un projet qui faisait partie d’une solution Visual Studio.
Nouveau comportement
Si vous développez avec le Kit de développement logiciel (SDK) .NET 8 ou une version ultérieure, dotnet pack utilisez la Release configuration par défaut pour tous les projets. Si vous avez un script CI/CD, des tests ou du code dans lequel vous avez codé Debug en dur dans un chemin de sortie, cette modification peut interrompre votre flux de travail. En outre, vous ne serez pas en mesure de déboguer une application packée, à moins que la configuration Debug ait été spécifiée explicitement (par exemple, à l’aide de dotnet pack --configuration Debug).
dotnet pack peut empaqueter pour plusieurs monikers d’infrastructure cible (TFM) en même temps. Si votre projet cible plusieurs versions et que vous avez des valeurs différentes PackRelease pour différentes cibles, vous pouvez avoir un conflit où certains TFMs packent la Release configuration et d’autres packent la Debug configuration.
Pour les projets dans une solution :
dotnet packpeut empaqueter tous les projets d’une solution Visual Studio si un fichier de solution est fourni. Pour chaque projet dans la solution, la valeur dePackReleaseest automatiquement définie àtruesi elle est indéfinie. Pour quedotnet packdétermine la configuration appropriée à utiliser, tous les projets de la solution doivent convenir de leur valeur dePackRelease.Cette modification peut entraîner la régressation des performances
dotnet pack, en particulier pour les solutions qui contiennent de nombreux projets. Pour résoudre ce problème, une nouvelle variableDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSd’environnement a été introduite.La
DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONSvariable d’environnement n’est plus reconnue.
Version introduite
.NET 8 Préversion 1
Type de changement cassant
Cette modification peut affecter la compatibilité de la source et est également un changement comportemental.
Raison de la modification
Dans la plupart des cas, lorsque vous créez un package, vous souhaitez que votre code soit optimisé et que vous puissiez réduire la taille du package en excluant les informations de débogage.
La DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS variable d’environnement a été supprimée, car le comportement activé est désormais le comportement par défaut et le contrôle granulaire n’est plus nécessaire.
Action recommandée
Pour désactiver entièrement le nouveau comportement, vous pouvez définir la
DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEvariabletrued’environnement sur (ou toute autre valeur). Cette variable affecte à la foisdotnet publishetdotnet pack.Pour spécifier explicitement la configuration de l’emballage
Debug, utilisez l’option-cou--configurationavecdotnet pack.Si votre pipeline CI/CD est rompu en raison de chemins de sortie codés en dur, mettez à jour les chemins d'accès à
Releaseà la place deDebug, désactivez le nouveau comportement à l'aide de la variable d'environnementDOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE, ou spécifiez que la configurationDebugdoit être utilisée.Si vous empaquetez une solution et qu'elle est interrompue parce qu'un ou plusieurs projets définissent explicitement une valeur pour
PackRelease, vous devez définir explicitementPackReleaseàfalsedans chaque projet.<PropertyGroup> <PackRelease>false</PackRelease> </PropertyGroup>Si vous empaquetez une solution et que les performances ont régressé, vous pouvez définir la variable d'environnement
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSsurtrue(ou toute autre valeur) pour corriger la régression. Si vous utilisez cette variable et tout projet définitPackRelease, tous les projets doivent le définir, ou vous pouvez utiliser un fichier Directory.Build.Props . Cette variable affecte à la foisdotnet publishetdotnet pack.