Notes
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 publish
commande utilise désormais la Release
configuration au lieu de la Debug
configuration par défaut si le framework cible est .NET 8 ou une version ultérieure.
Comportement précédent
Auparavant, dotnet publish
utilisait la configuration Debug
, à moins que la configuration n'ait été spécifiée explicitement ou que PublishRelease
ait été définie à true
.
La PublishRelease
propriété a été ajoutée dans .NET 7 comme solution à ce changement radical. Auparavant, vous pouviez définir la DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
variable d’environnement à utiliser PublishRelease
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 publish
utilise par défaut la configuration Release
pour les projets dont TargetFramework
est défini sur net8.0
ou une version ultérieure. 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.
Si votre projet cible plusieurs versions, le nouveau comportement s’applique uniquement si vous spécifiez une infrastructure cible de .NET 8 ou ultérieure lorsque vous publiez (par exemple, à l’aide dotnet publish -f net8.0
de ).
Pour les projets dans une solution :
dotnet publish
peut publier tous les projets dans une solution Visual Studio si un fichier de solution est fourni. Pour les projets de solution qui ciblent .NET 8 ou version ultérieure, la valeur dePublishRelease
est implicitement définie àtrue
si elle est indéfinie. Toutefois, afin quedotnet publish
détermine la configuration correcte à utiliser pour la solution, tous les projets de la solution doivent s'accorder sur leur valeur dePublishRelease
. Si un projet plus ancien de la solution aPublishRelease
défini surfalse
, vous devez également définir explicitement la propriété surfalse
pour les nouveaux projets .NET 8+.Cette modification peut entraîner la régressation des performances
dotnet publish
, 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_SOLUTIONS
d’environnement a été introduite.La
DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
variable 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 publiez, vous souhaitez que votre code soit optimisé et que l’application reste plus petite en excluant les informations de débogage. Les clients ont demandé depuis longtemps que Release
soit la configuration par défaut pour publish
. En outre, Visual Studio a eu ce comportement depuis de nombreuses années.
La DOTNET_CLI_ENABLE_PUBLISH_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_RELEASE
variabletrue
d’environnement sur (ou toute autre valeur). Cette variable affecte à la foisdotnet publish
etdotnet pack
.Pour spécifier explicitement la configuration de
Debug
pour la publication, utilisez l’option-c
ou--configuration
avecdotnet publish
.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 configurationDebug
doit être utilisée.Si vous publiez une solution et qu'elle est cassée, vous pouvez explicitement définir
PublishRelease
àtrue
, ou utiliserfalse
pour revenir au comportement précédent.<PropertyGroup> <PublishRelease>true</PublishRelease> </PropertyGroup>
Vous pouvez également spécifier la propriété dans un fichier Directory.Build.Props . Toutefois, si vous le définissez
false
dans ce fichier, vous devez toujours définir explicitement la propriétéfalse
dans les projets .NET 8+ dans la solution. De même, si certains projets définissent explicitement une valeur différente de la valeur du fichier Directory.Build.Props , la publication échoue.Si vous publiez une solution et que les performances ont régressé, vous pouvez définir la
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
variabletrue
d’environnement sur (ou toute autre valeur) pour supprimer la régression. Toutefois, si vous définissez cette variable et que votre solution contient un projet .NET 8+ et un projet qui cible .NET 7 ou une version antérieure, la publication échoue jusqu’à ce que tous les projets définissentPublishRelease
. Cette variable affecte à la foisdotnet publish
etdotnet pack
.