Entrada System.diagnostics en app.config

En el caso de las aplicaciones que tienen un archivo app.config, la entrada <configuration><configSections> ya no puede contener una entrada <section name="system.diagnostics">. Si está presente, debe quitar la entrada.

Tener una entrada <section name="system.diagnostics"> produce la siguiente excepción en tiempo de ejecución cuando se usa por primera vez el sistema de configuración:

ConfigurationErrorsException: ya está definido el nombre de sección o grupo «system.diagnostics». Las actualizaciones de esto solo pueden producirse en el nivel de configuración donde se define.

Por ejemplo, el siguiente archivo app.config contiene la entrada innecesaria:

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

Es probable que esta interrupción solo se produzca para las aplicaciones que:

  • Se migraron de .NET Framework a .NET.
  • Agregaron explícitamente <section name="system.diagnostics"> al archivo app.config para admitir la lectura manual de la sección <system.diagnostics>.
  • Se actualizaron a .NET 7, que tiene una entrada implícita <section name="system.diagnostics">.

Comportamiento anterior

Se permitía especificar <section name="system.diagnostics"> y era necesario si había una sección de configuración <system.diagnostics> posterior, como la siguiente:

<configuration>
    <system.diagnostics>

Sin embargo, la sección no se leyó automáticamente. Esto se debe a que System.Diagnostics aún no admitía la característica para agregar clientes de escucha y configurar otras características de diagnóstico mediante el procesamiento de esa sección.

Sin embargo, .NET Framework admite el procesamiento de una sección <system.diagnostics> y tiene una entrada <section name="system.diagnostics"> en el archivo machine.config.

Comportamiento nuevo

System.Diagnostics ahora admite la lectura de la sección <system.diagnostics> desde el archivo de configuración y agrega una entrada <section name="system.diagnostics"> implícita. Tener una entrada <section name="system.diagnostics"> explícita en el archivo app.config provoca una entrada duplicada, que produce ConfigurationErrorsException.

Versión introducida

.NET 7 RC 1

Tipo de cambio importante

Este cambio puede afectar a la compatibilidad binaria.

Motivo del cambio

Para admitir una nueva característica en la que System.Diagnostics lee el archivo app.config, teníamos que agregar el elemento <section name="system.diagnostics"> implícito.

Quite la sección <section name="system.diagnostics" ... > innecesaria.

API afectadas

N/D