Entrée System.diagnostics dans app.config

Pour les applications qui ont un fichier app.config, l’entrée <configuration><configSections> n’est plus autorisée à contenir une entrée <section name="system.diagnostics">. Le cas échéant, vous devez supprimer l’entrée.

Le fait d’avoir une entrée <section name="system.diagnostics"> lève l’exception d’exécution suivante lors de la première utilisation du système de configuration :

ConfigurationErrorsException: Section or group name ’system.diagnostics’ is already defined. Les mises à jour de ce paramètre peuvent se produire uniquement au niveau de configuration où il est défini.

Par exemple, le fichier app.config suivant contient l’entrée inutile :

<configuration>
 <configSections>
   <section name="system.diagnostics"
            type="System.Diagnostics.SystemDiagnosticsSection,
            System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
 </configSections>

Ce changement cassant affectera probablement uniquement pour les applications qui :

  • Ont été migrées de .NET Framework vers .NET.
  • Avaient explicitement ajouté <section name="system.diagnostics"> au fichier app.config pour prendre en charge la lecture manuelle de la section <system.diagnostics>.
  • Ont été mises à niveau vers .NET 7, qui a une entrée <section name="system.diagnostics"> implicite.

Comportement précédent

La spécification de <section name="system.diagnostics"> était autorisée et nécessaire s’il existait une section de configuration ultérieure <system.diagnostics>, comme suit :

<configuration>
    <system.diagnostics>

Toutefois, la section n’était pas lue automatiquement. Cela est dû au fait que System.Diagnostics ne prenait pas encore en charge la fonctionnalité permettant d’ajouter des écouteurs et de configurer d’autres fonctionnalités de diagnostic en traitant cette section.

.NET Framework prend toutefois en charge le traitement d’une section <system.diagnostics> et a une entrée <section name="system.diagnostics"> dans le fichier machine.config.

Nouveau comportement

System.Diagnostics prend désormais en charge la lecture de la section <system.diagnostics> à partir du fichier config et ajoute une entrée <section name="system.diagnostics"> implicite. Le fait d’avoir une entrée <section name="system.diagnostics"> explicite dans le fichier app.config provoque une entrée en double, ce qui lève ConfigurationErrorsException.

Version introduite

.NET 7 RC 1

Type de changement cassant

Ce changement peut affecter la compatibilité binaire.

Raison de la modification

Pour prendre en charge une nouvelle fonctionnalité dans laquelle System.Diagnostics lit à partir du fichier app.config, nous avons dû ajouter l’élément <section name="system.diagnostics"> implicite.

Supprimez la section inutile <section name="system.diagnostics" ... >.

API affectées

N/A