Elemento <AppContextSwitchOverrides>

Define uno o varios modificadores usados por la clase AppContext para proporcionar un mecanismo para cancelar la participación con nueva funcionalidad.

<configuration>
  <runtime>
    <AppContextSwitchOverrides>

Sintaxis

<AppContextSwitchOverrides value="name1=value1[[;name2=value2];...]" />

Atributos y elementos

En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.

Atributos

Atributo Descripción
value Obligatorio. Define uno o varios nombres de modificador y sus valores booleanos asociados.

Atributo value

Valor Descripción
"name=value" Un nombre de modificador predefinido con su valor (true o false). Varios pares de nombre de modificador/valor se separan mediante punto y coma (";"). Para obtener una lista de los nombres de modificadores predefinidos admitidos por .NET Framework, consulte la sección Comentarios.

Elementos secundarios

Ninguno.

Elementos primarios

Elemento Descripción
configuration Elemento raíz de cada archivo de configuración usado por las aplicaciones de Common Language Runtime y .NET Framework.
runtime Contiene información sobre las opciones de inicialización del motor en tiempo de ejecución.

Comentarios

A partir de .NET Framework 4.6, el elemento <AppContextSwitchOverrides> de un archivo de configuración permite a los llamadores de una API determinar si su aplicación puede aprovechar la nueva funcionalidad o conservar la compatibilidad con versiones anteriores de una biblioteca. Por ejemplo, si el comportamiento de una API ha cambiado entre dos versiones de una biblioteca, el elemento <AppContextSwitchOverrides> permite a los autores de llamadas de esa API optar por no participar en el nuevo comportamiento en las versiones de la biblioteca que admiten la nueva funcionalidad. En el caso de las aplicaciones que llaman a las API de .NET Framework, el elemento <AppContextSwitchOverrides> también puede permitir a los autores de llamadas cuyas aplicaciones tienen como destino una versión anterior de .NET Framework participar en una nueva funcionalidad si su aplicación se ejecuta en una versión de .NET Framework que la incluye.

El atributo value del elemento <AppContextSwitchOverrides> consta de una sola cadena que consta de uno o varios pares de nombre/valor delimitados por punto y coma. Cada nombre identifica un modificador de compatibilidad y su valor correspondiente es un valor booleano (true o false) que indica si se establece el modificador. De forma predeterminada, el modificador es false, y las bibliotecas proporcionan la nueva funcionalidad. Solo proporcionan la funcionalidad anterior si se establece el modificador (es decir, su valor es true). Esto permite a las bibliotecas proporcionar un nuevo comportamiento para una API existente, al tiempo que permite a los autores de llamadas que dependen del comportamiento anterior no participar en la nueva funcionalidad.

.NET Framework admite los modificadores siguientes:

Nombre de conmutador Descripción Inclusión
Switch.MS.Internal.
DoNotApplyLayoutRoundingToMarginsAndBorderThickness
Controla si Windows Presentation Foundation usa un algoritmo heredado para el diseño de controles. Para más información, consulte Mitigación: diseño de WPF. .NET Framework 4.6
Switch.MS.Internal.
UseSha1AsDefaultHashAlgorithmForDigitalSignatures
Controla si el algoritmo predeterminado usado para firmar partes de un paquete por PackageDigitalSignatureManager es SHA1 o SHA256.
Debido a problemas de colisión con SHA1, Microsoft recomienda SHA256.
.NET Framework 4.7.1
Switch.System.Activities.
UseMD5CryptoServiceProviderForWFDebugger
Cuando se establece en false, permite la depuración de proyectos de flujo de trabajo basados en XAML con Visual Studio cuando FIPS está habilitado. Sin él, se produce una excepción NullReferenceException en llamadas a métodos del ensamblado System.Activities. .NET Framework 4.7
Switch.System.Activities.
UseMD5ForWFDebugger
Controla si la suma de comprobación de una instancia de flujo de trabajo del depurador usa MD5 o SHA1. .NET Framework 4.7
Switch.System.Activities.
UseSHA1HashForDebuggerSymbols
Controla si el hash de suma de comprobación de flujo de trabajo usa el algoritmo SHA1 introducido como valor predeterminado en .NET Framework 4.7 (true), o usa el algoritmo SHA256 predeterminado introducido como predeterminado en .NET Framework 4.8 (false).
Debido a problemas de colisión con SHA1, Microsoft recomienda SHA256.
.NET Framework 4.8
Switch.System.Diagnostics.
IgnorePortablePDBsInStackTraces
Controla si los seguimientos de la pila se obtienen al usar archivos PDB portables pueden incluir información de líneas y archivos de código fuente. false para incluir información de línea y archivo de origen; de lo contrario, true. .NET Framework 4.7.2
Switch.System.Drawing.
DontSupportPngFramesInIcons
Controla si el método Icon.ToBitmap produce una excepción cuando un objeto Icon tiene marcos PNG. Para más información, consulte Mitigación: marcos PNG en objetos de icono. .NET Framework 4.6
Switch.System.Drawing.Text.
DoNotRemoveGdiFontsResourcesFromFontCollection
Determina si los objetos System.Drawing.Text.PrivateFontCollection se eliminan de forma correcta cuando se agregan a la colección mediante el método PrivateFontCollection.AddFontFile(String). true para mantener el comportamiento heredado; false para eliminar todos los objetos de fuente privados. .NET Framework 4.7.2
Switch.System.Drawing.Printing.
OptimizePrintPreview
Controla si el rendimiento de PrintPreviewDialog está optimizado para impresoras de red. Para más información, vea Información general sobre el control PrintPreviewDialog (Windows Forms). .NET Framework 4.6
Switch.System.Globalization.EnforceJapaneseEraYearRanges Controla si se aplican comprobaciones de rango de años para las eras del calendario japonés. true para aplicar comprobaciones de rango de año y false para deshabilitarlas (comportamiento predeterminado). Para más información, vea Trabajar con calendarios. .NET Framework 4.6
Switch.System.Globalization.EnforceLegacyJapaneseDateParsing Controla si solo se reconoce "1" como primer año de una era de un calendario japonés en operaciones de análisis. true para reconocer solo "1"; false para reconocer "1" o Gannen (comportamiento predeterminado). Para más información, vea Trabajar con calendarios. .NET Framework 4.6
Switch.System.Globalization.FormatJapaneseFirstYearAsANumber Controla si el primer año de una era de calendario japonés se representa como "1" o Gannen en operaciones de formato. true para dar formato al primer año de la era como "1"; false para darle formato como Gannen (comportamiento predeterminado). Para más información, vea Trabajar con calendarios. .NET Framework 4.6
Switch.System.Globalization.NoAsyncCurrentCulture Controla si las operaciones asincrónicas no fluyen desde el contexto del subproceso que realiza la llamada. Para más información, consulte CurrentCulture y CurrentUICulture fluyen entre tareas. .NET Framework 4.6
Switch.System.IdentityModel.
DisableMultipleDNSEntriesInSANCertificate
Controla si el método X509CertificateClaimSet.FindClaims intenta coincidir con el tipo de notificación solo con la última entrada DNS. Para más información, consulte Mitigación: Método X509CertificateClaimSet.FindClaims. .NET Framework 4.6.1
Switch.System.IdentityModel.
EnableCachedEmptyDefaultAuthorizationContext
Controla si se permite que AuthorizationContext.Empty devuelva un objeto mutable. .NET Framework 4.6
Switch.System.IO.BlockLongPaths Controla si las rutas de acceso de más de MAX_PATH (260 caracteres) inician PathTooLongException. Para más información, vea Compatibilidad con rutas de acceso con formato largo. .NET Framework 4.6.2
Switch.System.IO.Compression.
DoNotUseNativeZipLibraryForDecompression
Controla si la clase DeflateStream usa rutinas nativas del sistema operativo para la descompresión. false para usar las API nativas; true para usar la implementación DeflateStream. .NET Framework 4.7.2
Switch.System.IO.Compression.ZipFile.
UseBackslash
Usa la barra diagonal inversa ("\") en lugar de la barra diagonal ("/") como separador de ruta de acceso en la propiedad ZipArchiveEntry.FullName. Para más información, consulte Mitigación: separador de ruta de acceso de ZipArchiveEntry.FullName. .NET Framework 4.6.1
Switch.System.IO.Ports.
DoNotCatchSerialStreamThreadExceptions
Controla si las excepciones del sistema operativo que se producen en subprocesos en segundo plano creados con secuencias SerialPort finalizan el proceso. .NET Framework 4.7.1
Switch.System.IO.
UseLegacyPathHandling
Controla si se usa la normalización de rutas de acceso heredadas y si las rutas de acceso URI son compatibles con los métodos Path.GetDirectoryName y Path.GetPathRoot. Para más información, vea Mitigación: normalización de la ruta de acceso y Mitigación: comprobaciones de dos puntos en las rutas de acceso. .NET Framework 4.6.2
Switch.System.
MemberDescriptorEqualsReturnsFalseIfEquivalent
Controla si una prueba de igualdad compara la propiedad MemberDescriptor.Category de un objeto con la propiedad MemberDescriptor.Description del segundo objeto. Para más información, vea Implementación incorrecta de MemberDescriptor.Equals. .NET Framework 4.6.2
Switch.System.Net.
DontCheckCertificateEKUs
Deshabilita la validación del identificador de objeto (OID) de uso mejorado de clave (EKU) del certificado. Una extensión de uso mejorado de clave (EKU) es una colección de identificadores de objetos (OID) que indica las aplicaciones que usan la clave. .NET Framework 4.6
Switch.System.Net.
DontEnableSchSendAuxRecord
Deshabilita la mitigación de la vulnerabilidad de seguridad del explorador TLS1.0 contra SSL/TLS (BEAST) deshabilitando el uso de SCH_SEND_AUX_RECORD. .NET Framework 4.6
Switch.System.Net.
DontEnableSchUseStrongCrypto
Controla si las clases System.Net.ServicePointManager y System.Net.Security.SslStream pueden usar el protocolo SSL 3.0. Para más información, consulte Mitigación: protocolos TLS. .NET Framework 4.6
Switch.System.Net.
DontEnableSystemDefaultTlsVersions
Deshabilita las versiones de TLS de SystemDefault que se revierten a un valor predeterminado de Tls12, Tls11 y Tls. .NET Framework 4.7
Switch.System.Net.
DontEnableTlsAlerts
Deshabilita las alertas del lado servidor TLS de SslStream. .NET Framework 4.7
Switch.System.Runtime.InteropServices.
DoNotMarshalOutByrefSafeArrayOnInvoke
Controla si los parámetros ByRef SafeArray de los eventos de interoperabilidad COM vuelven a serializar en código nativo (false) o si la serialización en código nativo está deshabilitada (true). .NET Framework 4.8
Switch.System.Runtime.Serialization.
DoNotUseECMAScriptV6EscapeControlCharacter
Controla si DataContractJsonSerializer serializa algunos caracteres de control basados en los estándares ECMAScript V6 y V8. Para más información, vea Mitigación: Serialización del caracteres de control con DataContractJsonSerializer .NET Framework 4.7
Switch.System.Runtime.Serialization.
DoNotUseTimeZoneInfo
Controla si DataContractJsonSerializer admite varios ajustes o solo un ajuste para una zona horaria. Si es true, usa el tipo TimeZoneInfo para serializar y deserializar los datos de fecha y hora; de lo contrario, usa el tipo TimeZone, que no admite varias reglas de ajuste. .NET Framework 4.6.2
Switch.System.Runtime.Serialization.UseNewMaxArraySize Controla si System.Runtime.Serialization.ObjectManager usa un tamaño de matriz mayor durante la serialización y deserialización de objetos. Establezca este modificador en true para mejorar el rendimiento de la serialización y deserialización de gráficos de objetos grandes por tipos como BinaryFormatter. .NET Framework 4.7.2
Switch.System.Security.ClaimsIdentity.
SetActorAsReferenceWhenCopyingClaimsIdentity
Controla si el constructor ClaimsIdentity(IIdentity) establece la propiedad ClaimsIdentity.Actor del nuevo objeto con una referencia de objeto existente. Para más información, vea Mitigation: Constructor ClaimsIdentity. .NET Framework 4.6.2
Switch.System.Security.Cryptography.
AesCryptoServiceProvider.DontCorrectlyResetDecryptor
Controla si el intento de reusar un descifrador AesCryptoServiceProvider produce CryptographicException. Para más información, vea El descifrador AesCryptoServiceProvider proporciona una transformación reutilizable. .NET Framework 4.6.2
Switch.System.Security.Cryptography.
DoNotAddrOfCspParentWindowHandle
Controla si el valor de la propiedad CspParameters.ParentWindowHandle es un IntPtr que representa la ubicación de memoria de un manipulador de ventana o si es un manipulador de ventana (un HWND). Para más información, vea Mitigación: CspParameters.ParentWindowHandle espera HWND. .NET Framework 4.7
Switch.System.Security.Cryptography.
UseLegacyFipsThrow
Controla si el uso de clases de criptografía administradas en el modo FIPS produce CryptographicException (true) o se basa en la implementación de bibliotecas del sistema (false). .NET Framework 4.8
Switch.System.Security.Cryptography.Pkcs.
UseInsecureHashAlgorithms
Determina si el valor predeterminado de algunas operaciones SignedCMS es SHA1 o SHA256.
Debido a problemas de colisión con SHA1, Microsoft recomienda SHA256.
.NET Framework 4.7.1
Switch.System.Security.Cryptography.X509Certificates.
ECDsaCertificateExtensions.UseLegacyPublicKeyReader
Controla si el método ECDsaCertificateExtensions.GetECDsaPublicKey gestiona de forma correcta todas las curvas con nombre admitidas por el sistema operativo (false) o revierte al comportamiento heredado. .NET Framework 4.8
Switch.System.Security.Cryptography.Xml.
UseInsecureHashAlgorithms
Determina si el valor predeterminado para algunas operaciones SignedXML es SHA1 o SHA256.
Debido a problemas de colisión con SHA1, Microsoft recomienda SHA256.
.NET Framework 4.7.1
Switch.System.ServiceModel.
AllowUnsignedToHeader
Determina si el modo de seguridad TransportWithMessageCredential permite mensajes con un encabezado "to" sin firmar. Se trata de un modificador de participación. Para más información, vea Cambios de runtime para la migración desde .NET Framework 4.5.2 a 4.6.1. .NET Framework 4.6.1
Switch.System.ServiceModel.
DisableAddressHeaderCollectionValidation>
Controla si el constructor AddressHeaderCollection(IEnumerable<AddressHeader>) inicia una excepción ArgumentException si uno de los elementos es null. .NET Framework 4.7.1
Switch.System.IdentityModel.
DisableCngCertificates
Determina si el intento de usar certificados X509 con un proveedor de almacenamiento de claves CSG genera una excepción. Para más información, vea La seguridad de transporte de WCF admite los certificados almacenados con CNG. .NET Framework 4.6.1
Switch.System.ServiceModel.
DisableExplicitConnectionCloseHeader
Cuando se usa el transporte HTTP con un servicio autohospedado, establecer este valor en true hace que WCF omita una aplicación que agregue el encabezado Connection: close a los encabezados de respuesta de una solicitud. Establecer este valor en false permite agregar el encabezado Connection: close a los encabezados de respuesta, lo que da como resultado el cierre del socket de solicitud después de enviar una respuesta. .NET Framework 4.6
Switch.System.ServiceModel.
DisableOperationContextAsyncFlow
Controla los interbloqueos que resultan de restringir instancias de un servicio de reintento a un único subproceso de ejecución a la vez. .NET Framework 4.6.2
Switch.System.ServiceModel.
DisableUsingServicePointManagerSecurityProtocols
Junto con Switch.System.Net.DontEnableSchUseStrongCrypto, determina si la seguridad del mensaje WCF usa TLS 1.1 y TLS 1.2. .NET Framework 4.7
Switch.System.ServiceModel.
DontEnableSystemDefaultTlsVersions
Un valor de false establece la configuración predeterminada para permitir que el sistema operativo elija el protocolo. Un valor de true establece como valor predeterminado el protocolo más alto disponible. (También disponible en la rama de mantenimiento de versiones anteriores del marco) .NET Framework 4.7.1
Switch.System.ServiceModel.
UseSha1InMsmqEncryptionAlgorithm
Determina si el algoritmo de firma de mensajes predeterminado para los mensajes MSMQ en WCF es SHA1 o SHA256.
Debido a problemas de colisión con SHA1, Microsoft recomienda SHA256.
.NET Framework 4.7.1
Switch.System.ServiceModel.
UseSha1InPipeConnectionGetHashAlgorithm
Controla si WCF usa un hash SHA1 o SHA256 para generar nombres aleatorios para canalizaciones con nombre.
Debido a problemas de colisión con SHA1, Microsoft recomienda SHA256.
.NET Framework 4.7.1
Switch.System.ServiceModel.Internals
IncludeNullExceptionMessageInETWTrace
Controla si se produce una excepción NullReferenceException cuando el mensaje de excepción es null. .NET Framework 4.7
Switch.System.ServiceProcess.
DontThrowExceptionsOnStart
Controla si las excepciones producidas en el startup del servicio se propagan al autor de la llamada del método ServiceBase.Run. .NET Framework 4.7.1
Switch.System.Threading.UseNetCoreTimer Controla si las instancias Timer aprovechan las mejoras de rendimiento de los entornos a gran escala. Si es true, se habilitan las mejoras de rendimiento; si es false (el valor predeterminado), se deshabilitan. .NET Framework 4.8
Switch.System.Uri.
DontEnableStrictRFC3986ReservedCharacterSets
Determina si algunos caracteres codificados por porcentaje que en ocasiones se descodificaban ahora se dejan sin codificar de manera constante. Si es true, se descodifican; de lo contrario, es false. .NET Framework 4.7.2
Switch.System.Uri.
DontKeepUnicodeBidiFormattingCharacters
Determina el control de caracteres bidireccionales Unicode en URI. true para quitarlos de los URI; false para conservarlos y codificarlos por porcentaje. .NET Framework 4.7.2
Switch.System.Windows.Controls.Grid.
StarDefinitionsCanExceedAvailableSpace
Determina si Windows Presentation Foundation aplica un algoritmo antiguo (true) o un algoritmo nuevo (false) al asignar espacio a *-columns. Para más información, vea Mitigación: Asignación del espacio del control de cuadrícula a columnas de estrella. .NET Framework 4.7
Switch.System.Windows.Controls.TabControl.
SelectionPropertiesCanLagBehindSelectionChangedEvent
Controla si un selector o un control de pestaña siempre actualiza el valor de su propiedad de valor seleccionada antes de generar el evento de cambio de selección. .NET Framework 4.7.1
Switch.System.Windows.Controls.Text.
UseAdornerForTextboxSelectionRendering
Determina si la representación de selección no basada en Adorner está disponible para los controles TextBox y PasswordBox para evitar texto ocluido (false), o si el texto se representa solo en la capa Adorner (true). .NET Framework 4.7.2
Switch.System.Windows.Data.Binding.
IListIndexerHidesCustomIndexer
Controla si los indizadores IList personalizados se usan de forma incorrecta (true) o correcta (false) por la clase System.Windows.Data.Binding. .NET Framework 4.8
Switch.System.Windows.DoNotScaleForDpiChanges Determina si se producen cambios de PPP en un sistema (un valor de false) o por monitor (un valor de true). .NET Framework 4.6.2
Switch.System.Windows.
DoNotUsePresentationDpiCapabilityTier2OrGreater
Controla si las mejoras en el dimensionamiento de los controles de un objeto System.Windows.Interop.HwndHost cuando se ejecuta WPF en modo compatible con monitor están deshabilitadas (true) o habilitadas (false). .NET Framework 4.8
Switch.System.Windows.Forms.
DisconnectUiaProvidersOnWmDestroy
Controla si los proveedores están desconectados cuando se destruye la ventana de control correspondiente (true) o no (false). Este modificador proporciona una participación en una corrección de rendimiento para solucionar una pérdida de IRawElementProviderSimple objetos. .NET Framework 4.8
Switch.System.Windows.Forms.
DomainUpDown.UseLegacyScrolling
Determina si el desarrollador debe controlar especialmente la acción DomainUpDown.UpButton() cuando el texto de control está presente. true para controlar la acción UpButton(); false para que las acciones DomainUpDown.UpButton() y DomainUpDown.DownButton() estén sincronizadas correctamente. .NET Framework 4.7.2
Switch.System.Windows.Forms.
DontSupportReentrantFilterMessage
Opta por no participar en el código que permite a una implementación personalizada IMessageFilter.PreFilterMessage filtrar mensajes de forma segura sin iniciar una excepción cuando se llama al método Application.FilterMessage. Para más información, consulte Mitigación: personalizar implementaciones de IMessageFilter.PreFilterMessage. .NET Framework 4.6.1
Switch.System.Windows.Forms.
UseLegacyContextMenuStripSourceControlValue
Determina si la propiedad ContextMenuStrip.SourceControl devuelve el control de código fuente cuando el usuario abre el menú desde un control anidado ToolStripMenuItem. true para devolver null, el comportamiento heredado; false para devolver el control de código fuente. .NET Framework 4.7.2
Switch.System.Windows.Forms.UseLegacyToolTipDisplay Controla si la compatibilidad con la invocación de información sobre herramientas está deshabilitada (true) o habilitada (false). Habilitar la compatibilidad con la invocación de información sobre herramientas también requiere que se deshabiliten las características de accesibilidad heredadas definidas por Switch.UseLegacyAccessibilityFeatures, Switch.UseLegacyAccessibilityFeatures.2 y Switch.UseLegacyAccessibilityFeatures.3 (establecido en false). .NET Framework 4.8
Switch.System.Windows.Input.Stylus.
EnablePointerSupport
Determina si se habilita una pila táctil o de lápiz opcional basada en WM_POINTER en aplicaciones WPF. Para más información, vea Mitigación: compatibilidad del lápiz y la entrada táctil basados en el puntero .NET Framework 4.7
Switch.System.Windows.Markup.
DoNotUseSha256ForMarkupCompilerChecksumAlgorithm
Determina si el algoritmo hash predeterminado usado para las sumas de comprobación es SHA256 (false) o SHA1 (true).
Debido a problemas de colisión con SHA1, Microsoft recomienda SHA256.
.NET Framework 4.7.2
Switch.System.Windows.Media.ImageSourceConverter.
OverrideExceptionWithNullReferenceException
Controla si se produce una excepción NullReferenceException heredada en lugar de la excepción que indica más específicamente su causa (como DirectoryNotFoundException o FileNotFoundException. Está pensado para su uso por código que depende del control de NullReferenceException. .NET Framework 4.7
Switch.System.Workflow.ComponentModel.
UseLegacyHashForXomlFileChecksum
Controla si el hash de suma de comprobación de los archivos XOML en las compilaciones del proyecto de flujo de trabajo usa el algoritmo MD5 (true) o si usan el algoritmo SHA256 introducido como valor predeterminado en .NET Framework 4.8.
Debido a problemas de colisión con MD5, Microsoft recomienda SHA256.
.NET Framework 4.8
Switch.System.Workflow.Runtime.
UseLegacyHashForSqlTrackingCacheKey
Controla si el hash de suma de comprobación de SqlTrackingService usa el algoritmo MD5 (true) para las cadenas almacenadas en caché, o si usa el algoritmo SHA256 introducido como valor predeterminado en .NET Framework 4.8.
Debido a problemas de colisión con MD5, Microsoft recomienda SHA256.
.NET Framework 4.8
Switch.System.Workflow.Runtime.
UseLegacyHashForWorkflowDefinitionDispenserCacheKey
Controla si el hash de suma de comprobación de Tiempo de ejecución de flujo de trabajo usa el algoritmo MD5 (true) para los flujos de trabajo almacenados en caché, o si usa el algoritmo SHA256 introducido como valor predeterminado en .NET Framework 4.8.
Debido a problemas de colisión con MD5, Microsoft recomienda SHA256.
.NET Framework 4.8
Switch.UseLegacyAccessibilityFeatures Controla si las características de accesibilidad disponibles a partir de .NET Framework 4.7.1 están habilitadas o deshabilitadas. .NET Framework 4.7.1
Switch.UseLegacyAccessibilityFeatures.2 Controla si las características de accesibilidad disponibles en .NET Framework 4.7.2 están habilitadas (false) o deshabilitadas (true). Si es true, Switch.UseLegacyAccessibilityFeatures también debe ser true para habilitar las características de accesibilidad de .NET Framework 4.7.1. .NET Framework 4.7.2
Switch.UseLegacyAccessibilityFeatures.3 Controla si las características de accesibilidad introducidas en .NET Framework 4.8 están habilitadas (false) o deshabilitadas (true). Si son true, Switch.UseLegacyAccessibilityFeatures y Switch.UseLegacyAccessibilityFeatures.2, también deben ser true. .NET Framework 4.8
Switch.UseLegacyToolTipDisplay Controla si se muestran información sobre herramientas cuando un usuario mantiene el cursor del mouse sobre un control WPF (true), o si se muestran tanto en el foco del teclado como en la tecla de método abreviado de teclado (false, el comportamiento predeterminado). Para las aplicaciones que se ejecutan en .NET Framework 4.8, pero tienen como destino versiones anteriores de .NET Framework, la habilitación del foco de teclado y la compatibilidad con teclas de método abreviado requieren que Switch.UseLegacyAccessibilityFeatures, Switch.UseLegacyAccessibilityFeatures.2 y Switch.UseLegacyAccessibilityFeatures.3 estén establecidos en false. .NET Framework 4.8
Switch.System.Xml.
IgnoreEmptyKeySequences
Controla si la validación del esquema XSD omite las secuencias de claves vacías en claves compuestas. Para más información, vea Mitigación: validación de esquemas XML. .NET Framework 4.6

Nota

En lugar de agregar un elemento AppContextSwitchOverrides a un archivo de configuración de la aplicación, también puede establecer los modificadores mediante programación llamando al método AppContext.SetSwitch.

Los desarrolladores de bibliotecas también pueden definir modificadores personalizados para permitir que los autores de llamadas no participen en la funcionalidad modificada introducida en versiones posteriores de sus bibliotecas. Para obtener más información, vea la clase AppContext.

Modificadores en aplicaciones de ASP.NET

Puede configurar una aplicación de ASP.NET para usar el valor de compatibilidad agregando un elemento <Add> a la sección <appSettings> del archivo web.config.

En el ejemplo siguiente se usa el elemento <add> para agregar dos valores a la sección <appSettings> de un archivo web.config:

<appSettings>
  <add key="AppContext.SetSwitch:Switch.System.Globalization.NoAsyncCurrentCulture" value="true" />
  <add key="AppContext.SetSwitch:Switch.System.Uri.DontEnableStrictRFC3986ReservedCharacterSets" value="true" />
</appSettings>

Ejemplo

En el ejemplo siguiente se usa el elemento AppContextSwitchOverrides para definir un único modificador de compatibilidad de aplicaciones, Switch.System.Globalization.NoAsyncCurrentCulture, que impide que la referencia cultural fluya entre subprocesos en llamadas de método asincrónico.

<configuration>
   <runtime>
      <AppContextSwitchOverrides value="Switch.System.Globalization.NoAsyncCurrentCulture=true" />
   </runtime>
</configuration>

En el ejemplo siguiente se usa el elemento AppContextSwitchOverrides para definir dos modificadores de compatibilidad de aplicaciones: Switch.System.Globalization.NoAsyncCurrentCulture y Switch.System.IO.BlockLongPaths. Un punto y coma separa los dos pares nombre/valor.

<configuration>
    <runtime>
       <AppContextSwitchOverrides
          value="Switch.System.Globalization.NoAsyncCurrentCulture=true;Switch.System.IO.BlockLongPaths=true" />
    </runtime>
</configuration>

Consulte también