Elemento <AppContextSwitchOverrides>

Define uma ou mais opções usadas pela classe AppContext para fornecer um mecanismo de recusa de uma nova funcionalidade.

<configuração>
  <runtime>
    <AppContextSwitchOverrides>

Syntax

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

Atributos e elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Atributos

Atributo Descrição
value Necessário. Define um ou mais nomes de opção e seus valores boolianos associados.

atributo value

Valor Descrição
"name=value" Um nome de opção predefinido junto com seu valor (true ou false). Vários pares de nome/valor de opção são separados por ponto e vírgula (“;”). Para obter uma lista de nomes de opção predefinidos compatíveis com o .NET Framework, consulte a seção Comentários.

Elementos filho

Nenhum.

Elementos pai

Elemento Descrição
configuration O elemento raiz em cada arquivo de configuração usado pelos aplicativos do Common Language Runtime e .NET Framework.
runtime Contém informações sobre opções de inicialização do runtime.

Comentários

A partir do .NET Framework 4.6, o elemento <AppContextSwitchOverrides> em um arquivo de configuração permite que os chamadores de uma API determinem se o aplicativo pode aproveitar a nova funcionalidade ou preservar a compatibilidade com versões anteriores de uma biblioteca. Por exemplo, se o comportamento de uma API tiver sido alterado entre duas versões de uma biblioteca, o elemento <AppContextSwitchOverrides> permitirá que os chamadores dessa API optem por não usar o novo comportamento em versões da biblioteca que dão suporte à nova funcionalidade. Para aplicativos que chamam APIs no .NET Framework, o elemento <AppContextSwitchOverrides> também pode permitir que os chamadores cujos aplicativos direcionam uma versão anterior do .NET Framework optem por novas funcionalidades se o aplicativo estiver em execução em uma versão do .NET Framework que inclua essa funcionalidade.

O atributo value do elemento <AppContextSwitchOverrides> consiste em uma única cadeia de caracteres que consiste em um ou mais pares de nome/valor delimitados por ponto e vírgula. Cada nome identifica uma opção de compatibilidade e seu valor correspondente é um booliano (true ou false) que indica se a opção está definida. Por padrão, a opção é falsee as bibliotecas fornecem a nova funcionalidade. Eles só fornecem a funcionalidade anterior se a opção for definida (ou seja, seu valor for true). Isso permite que as bibliotecas forneçam um novo comportamento para uma API existente, permitindo que os chamadores que dependem do comportamento anterior optem por não usar a nova funcionalidade.

O .NET Framework oferece suporte às seguintes opções:

Nome da opção Descrição Introduzida
Switch.MS.Internal.
DoNotApplyLayoutRoundingToMarginsAndBorderThickness
Controla se o Windows Presentation Foundation usa um algoritmo herdado para layout de controle. Para saber mais, confira Mitigação: layout de WPF. .NET Framework 4.6
Switch.MS.Internal.
UseSha1AsDefaultHashAlgorithmForDigitalSignatures
Controla se o algoritmo padrão usado para assinar partes de um pacote por PackageDigitalSignatureManager é SHA1 ou SHA256.
Em razão de problemas de colisão com SHA1, a Microsoft recomenda SHA256.
.NET Framework 4.7.1
Switch.System.Activities.
UseMD5CryptoServiceProviderForWFDebugger
Quando definido como false, permite a depuração de projetos de fluxo de trabalho baseados em XAML com o Visual Studio quando o FIPS está habilitado. Sem ele, um NullReferenceException é gerado em chamadas para métodos no assembly System.Activities. .NET Framework 4.7
Switch.System.Activities.
UseMD5ForWFDebugger
Controla se a soma de verificação de uma instância de fluxo de trabalho no depurador usa MD5 ou SHA1. .NET Framework 4.7
Switch.System.Activities.
UseSHA1HashForDebuggerSymbols
Controla se o hash de soma de verificação de fluxo de trabalho usa o algoritmo SHA1 introduzido como o padrão no .NET Framework 4.7 (true) ou se ele usa o algoritmo SHA256 padrão introduzido como o padrão no .NET Framework 4.8 (false).
Em razão de problemas de colisão com SHA1, a Microsoft recomenda SHA256.
.NET Framework 4.8
Switch.System.Diagnostics.
IgnorePortablePDBsInStackTraces
Controla se os rastreamentos de pilha obtidos ao usar PDBs portáteis podem incluir informações de arquivo de origem e de linha. false para incluir informações de arquivo de origem e linha; caso contrário, true. .NET Framework 4.7.2
Switch.System.Drawing.
DontSupportPngFramesInIcons
Controla se o método Icon.ToBitmap gera uma exceção quando um objeto Icon tem quadros PNG. Para saber mais, confira Mitigation: PNG Frames in Icon Objects (Mitigação: quadros PNG em objetos de ícone). .NET Framework 4.6
Switch.System.Drawing.Text.
DoNotRemoveGdiFontsResourcesFromFontCollection
Determina se os objetos System.Drawing.Text.PrivateFontCollection são descartados corretamente quando adicionados à coleção pelo método PrivateFontCollection.AddFontFile(String). true para manter o comportamento herdado; false para descartar todos os objetos de fonte privada. .NET Framework 4.7.2
Switch.System.Drawing.Printing.
OptimizePrintPreview
Controla se o desempenho do PrintPreviewDialog é otimizado para impressoras de rede. Para obter mais informações, consulte Visão geral do controle PrintPreviewDialog. .NET Framework 4.6
Switch.System.Globalization.EnforceJapaneseEraYearRanges Controla se as verificações de intervalo de ano para eras do calendário japonês são impostas. true para impor verificações de intervalo de ano e false para desabilitá-las (o comportamento padrão). Para saber mais, consulte Como trabalhar com calendários. .NET Framework 4.6
Switch.System.Globalization.EnforceLegacyJapaneseDateParsing Controla se apenas “1” é reconhecido como o primeiro ano de uma era do calendário japonês em operações de análise. true para reconhecer apenas “1”; false para reconhecer “1” ou Gannen (o comportamento padrão). Para saber mais, consulte Como trabalhar com calendários. .NET Framework 4.6
Switch.System.Globalization.FormatJapaneseFirstYearAsANumber Controla se o primeiro ano de uma era do calendário japonês é representado como “1” ou Gannen em operações de formatação. true para formatar o primeiro ano da era como “1”; false para formatá-lo como Gannen (o comportamento padrão). Para saber mais, consulte Como trabalhar com calendários. .NET Framework 4.6
Switch.System.Globalization.NoAsyncCurrentCulture Controla se as operações assíncronas não fluem do contexto do thread de chamada. Para obter mais informações, consulte Fluxo CurrentCulture e CurrentUICulture entre tarefas. .NET Framework 4.6
Switch.System.IdentityModel.
DisableMultipleDNSEntriesInSANCertificate
Controla se o método X509CertificateClaimSet.FindClaims tenta corresponder ao tipo de declaração somente com a última entrada DNS. Para saber mais, confira Mitigation: X509CertificateClaimSet.FindClaims Method (Mitigação: método X509CertificateClaimSet.FindClaims). .NET Framework 4.6.1
Switch.System.IdentityModel.
EnableCachedEmptyDefaultAuthorizationContext
Controla se é permitido que AuthorizationContext.Empty retorne um objeto mutável. .NET Framework 4.6
Switch.System.IO.BlockLongPaths Controla se caminhos maiores que MAX_PATH (260 caracteres) geram um PathTooLongException. Para saber mais, confira Suporte ao caminho longo. .NET Framework 4.6.2
Switch.System.IO.Compression.
DoNotUseNativeZipLibraryForDecompression
Controla se as rotinas nativas do sistema operacional são usadas para descompactação pela classe DeflateStream. false para usar APIs nativas; true para usar a implementação DeflateStream. .NET Framework 4.7.2
Switch.System.IO.Compression.ZipFile.
UseBackslash
Usa a barra invertida ("\") em vez da barra ("/") como separador de caminho na propriedade ZipArchiveEntry.FullName. Para saber mais, confira Mitigation: ZipArchiveEntry.FullName Path Separator (Mitigação: separador de caminho ZipArchiveEntry.FullName). .NET Framework 4.6.1
Switch.System.IO.Ports.
DoNotCatchSerialStreamThreadExceptions
Controla se as exceções do sistema operacional geradas em threads em segundo plano criados com fluxos SerialPort encerram o processo. .NET Framework 4.7.1
Switch.System.IO.
UseLegacyPathHandling
Controla se a normalização do caminho herdado é usada e os caminhos de URI têm suporte pelos métodos Path.GetDirectoryName e Path.GetPathRoot. Para obter mais informações, consulte Mitigação: normalização do caminho e Mitigação: verificações de pontos de caminho. .NET Framework 4.6.2
Switch.System.
MemberDescriptorEqualsReturnsFalseIfEquivalent
Controla se um teste de igualdade compara a propriedade MemberDescriptor.Category de um objeto com a propriedade MemberDescriptor.Description do segundo objeto. Para obter mais informações, consulte Implementação incorreta de MemberDescriptor.Equals. .NET Framework 4.6.2
Switch.System.Net.
DontCheckCertificateEKUs
Desabilita a validação do identificador de objeto (OID) de uso avançado de chave (EKU) do certificado. Uma extensão de EKU (uso avançado de chave) é uma coleção de OIDs (identificadores de objeto) que indicam os aplicativos que usam a chave. .NET Framework 4.6
Switch.System.Net.
DontEnableSchSendAuxRecord
Desabilita a exploração do navegador TLS1.0 em relação à mitigação SSL/TLS (BEAST) desabilitando o uso de SCH_SEND_AUX_RECORD. .NET Framework 4.6
Switch.System.Net.
DontEnableSchUseStrongCrypto
Controla se as classes System.Net.ServicePointManager e System.Net.Security.SslStream podem usar o protocolo SSL 3.0. Para saber mais, confira Mitigation: TLS Protocols (Mitigação: protocolos TLS). .NET Framework 4.6
Switch.System.Net.
DontEnableSystemDefaultTlsVersions
Desabilita as versões do TLS SystemDefault revertendo para um padrão de Tls12, Tls11, Tls. .NET Framework 4.7
Switch.System.Net.
DontEnableTlsAlerts
Desabilita alertas do lado do servidor do TLS SslStream. .NET Framework 4.7
Switch.System.Runtime.InteropServices.
DoNotMarshalOutByrefSafeArrayOnInvoke
Controla se os parâmetros ByRef SafeArray em eventos de interoperabilidade COM realizam marshal de volta para o código nativo (false) ou se realizar marshal de volta para o código nativo está desabilitado (true). .NET Framework 4.8
Switch.System.Runtime.Serialization.
DoNotUseECMAScriptV6EscapeControlCharacter
Controla se o DataContractJsonSerializer serializa alguns caracteres de controle com base nos padrões ECMAScript V6 e V8. Para obter mais informações, consulte Mitigação: serialização de caracteres de controle com o DataContractJsonSerializer .NET Framework 4.7
Switch.System.Runtime.Serialization.
DoNotUseTimeZoneInfo
Controla se o DataContractJsonSerializer dá suporte a vários ajustes ou apenas um único ajuste para um fuso horário. Se true, ele usa o tipo TimeZoneInfo para serializar e desserializar dados de data e hora; caso contrário, ele usa o tipo TimeZone, que não dá suporte a várias regras de ajuste. .NET Framework 4.6.2
Switch.System.Runtime.Serialization.UseNewMaxArraySize Controla se System.Runtime.Serialization.ObjectManager usa um tamanho de matriz maior durante a serialização e desserialização do objeto. Defina essa opção para true para melhorar o desempenho da serialização e desserialização de grafos de objetos grandes por tipos como BinaryFormatter. .NET Framework 4.7.2
Switch.System.Security.ClaimsIdentity.
SetActorAsReferenceWhenCopyingClaimsIdentity
Controla se o construtor ClaimsIdentity(IIdentity) define a propriedade ClaimsIdentity.Actor do novo objeto com uma referência de objeto existente. Para saber mais, confira Mitigation: ClaimsIdentity Constructor (Mitigação: construtor ClaimsIdentity). .NET Framework 4.6.2
Switch.System.Security.Cryptography.
AesCryptoServiceProvider.DontCorrectlyResetDecryptor
Controla se a tentativa de reutilizar uma descriptografia AesCryptoServiceProvider gera um CryptographicException. Para obter mais informações, consulte Descriptografia AesCryptoServiceProvider fornece uma transformação reutilizável. .NET Framework 4.6.2
Switch.System.Security.Cryptography.
DoNotAddrOfCspParentWindowHandle
Controla se o valor da propriedade CspParameters.ParentWindowHandle é um IntPtr que representa o local de memória de um identificador de janela ou se é um identificador de janela (um HWND). Para obter mais informações, consulte Mitigação: CspParameters.ParentWindowHandle espera um HWND. .NET Framework 4.7
Switch.System.Security.Cryptography.
UseLegacyFipsThrow
Controla se o uso de classes de criptografia gerenciadas no modo FIPS gera um CryptographicException (true) ou depende da implementação de bibliotecas do sistema (false). .NET Framework 4.8
Switch.System.Security.Cryptography.Pkcs.
UseInsecureHashAlgorithms
Determina se o padrão para algumas operações do SignedCMS é SHA1 ou SHA256.
Em razão de problemas de colisão com SHA1, a Microsoft recomenda SHA256.
.NET Framework 4.7.1
Switch.System.Security.Cryptography.X509Certificates.
ECDsaCertificateExtensions.UseLegacyPublicKeyReader
Controla se o método ECDsaCertificateExtensions.GetECDsaPublicKey manipula corretamente todas as curvas nomeadas com suporte pelo sistema operacional (false) ou reverte para o comportamento herdado. .NET Framework 4.8
Switch.System.Security.Cryptography.Xml.
UseInsecureHashAlgorithms
Determina se o padrão para algumas operações do SignedXML é SHA1 ou SHA256.
Em razão de problemas de colisão com SHA1, a Microsoft recomenda SHA256.
.NET Framework 4.7.1
Switch.System.ServiceModel.
AllowUnsignedToHeader
Determina se o modo de segurança TransportWithMessageCredential permite mensagens com um cabeçalho "para" não assinado. Esse é um recurso de opção de aceitação. Para obter mais informações, consulte Alterações de runtime no .NET Framework 4.6.1. .NET Framework 4.6.1
Switch.System.ServiceModel.
DisableAddressHeaderCollectionValidation>
Controle se o construtor AddressHeaderCollection(IEnumerable<AddressHeader>) gera um ArgumentException se um elemento for null. .NET Framework 4.7.1
Switch.System.IdentityModel.
DisableCngCertificates
Determina se a tentativa de usar certificados X509 com um provedor de armazenamento de chave CSG gera uma exceção. Para obter mais informações, consulte Segurança de transporte do WCF é compatível com certificados armazenados usando CNG. .NET Framework 4.6.1
Switch.System.ServiceModel.
DisableExplicitConnectionCloseHeader
Ao usar o transporte HTTP com um serviço auto-hospedado, definir esse valor faz para true faz com que o WCF ignore um aplicativo adicionando o cabeçalho Connection: close aos cabeçalhos de resposta de uma solicitação. Definir esse valor para false habilita a adição do cabeçalho Connection: close aos cabeçalhos de resposta, o que resulta no fechamento do soquete de solicitação após o envio de uma resposta. .NET Framework 4.6
Switch.System.ServiceModel.
DisableOperationContextAsyncFlow
Lida com deadlocks que resultam da restrição de instâncias de um serviço de novo participante a um único thread de execução por vez. .NET Framework 4.6.2
Switch.System.ServiceModel.
DisableUsingServicePointManagerSecurityProtocols
Junto com Switch.System.Net.DontEnableSchUseStrongCrypto, determina se a segurança da mensagem do WCF usa TLS 1.1 e TLS 1.2. .NET Framework 4.7
Switch.System.ServiceModel.
DontEnableSystemDefaultTlsVersions
Um valor de false define a configuração padrão para permitir que o sistema operacional escolha o protocolo. Um valor de true define o padrão como o maior protocolo disponível. (Também disponível no branch de manutenção de versões anteriores da estrutura) .NET Framework 4.7.1
Switch.System.ServiceModel.
UseSha1InMsmqEncryptionAlgorithm
Determina se o algoritmo de assinatura de mensagem padrão para mensagens MSMQ no WCF é SHA1 ou SHA256.
Em razão de problemas de colisão com SHA1, a Microsoft recomenda SHA256.
.NET Framework 4.7.1
Switch.System.ServiceModel.
UseSha1InPipeConnectionGetHashAlgorithm
Controla se o WCF usa um hash SHA1 ou SHA256 para gerar nomes aleatórios para pipes nomeados.
Em razão de problemas de colisão com SHA1, a Microsoft recomenda SHA256.
.NET Framework 4.7.1
Switch.System.ServiceModel.Internals
IncludeNullExceptionMessageInETWTrace
Controla se uma nullReferenceException será gerada quando a mensagem de exceção for nula. .NET Framework 4.7
Switch.System.ServiceProcess.
DontThrowExceptionsOnStart
Controla se as exceções geradas na inicialização do serviço são propagadas para o chamador do método ServiceBase.Run. .NET Framework 4.7.1
Switch.System.Threading.UseNetCoreTimer Controla se as instâncias Timer aproveitam as melhorias de desempenho para ambientes de alta escala. Se true, as melhorias de desempenho estão habilitadas; se false (o valor padrão), elas estão desabilitadas. .NET Framework 4.8
Switch.System.Uri.
DontEnableStrictRFC3986ReservedCharacterSets
Determina se determinados caracteres codificados por porcentagem que, às vezes, eram decodificados agora permanecem codificados de forma consistente. Se true, eles estão decodificados; caso contrário, false. .NET Framework 4.7.2
Switch.System.Uri.
DontKeepUnicodeBidiFormattingCharacters
Determina o tratamento de caracteres bidirecionais Unicode em URIs. true para retirá-los dos URIs; false para preservá-los e codifique-os por porcentagem. .NET Framework 4.7.2
Switch.System.Windows.Controls.Grid.
StarDefinitionsCanExceedAvailableSpace
Determina se o Windows Presentation Foundation aplica um algoritmo antigo (true) ou um novo algoritmo (false) na alocação de espaço para *-colunas. Para obter mais informações, consulte Mitigação: alocação de espaço do controle de grade para colunas de estrela. .NET Framework 4.7
Switch.System.Windows.Controls.TabControl.
SelectionPropertiesCanLagBehindSelectionChangedEvent
Controla se um seletor ou um controle de guia sempre atualiza o valor de sua propriedade de valor selecionado antes de gerar o evento alterado de seleção. .NET Framework 4.7.1
Switch.System.Windows.Controls.Text.
UseAdornerForTextboxSelectionRendering
Determina se a renderização de seleção não baseada em Adorno está disponível para os controles TextBox e PasswordBox para evitar texto ocluso (false) ou se o texto é renderizado somente na camada Adorner (true). .NET Framework 4.7.2
Switch.System.Windows.Data.Binding.
IListIndexerHidesCustomIndexer
Controla se os indexadores IList personalizados são usados incorretamente (true) ou corretamente (false) pela classe System.Windows.Data.Binding. .NET Framework 4.8
Switch.System.Windows.DoNotScaleForDpiChanges Determina se as alterações de DPI ocorrem em um sistema por sistema (um valor de false) ou por monitor (um valor de true). .NET Framework 4.6.2
Switch.System.Windows.
DoNotUsePresentationDpiCapabilityTier2OrGreater
Controla se as melhorias no dimensionamento de controles em um System.Windows.Interop.HwndHost quando o WPF é executado no modo de reconhecimento por monitor estão desabilitadas (true) ou habilitadas (false). .NET Framework 4.8
Switch.System.Windows.Forms.
DisconnectUiaProvidersOnWmDestroy
Controla se os provedores são desconectados quando a janela de controle correspondente é destruída (true) ou não (false). Essa opção fornece uma opção para uma correção de desempenho para resolver um vazamento de IRawElementProviderSimple objetos. .NET Framework 4.8
Switch.System.Windows.Forms.
DomainUpDown.UseLegacyScrolling
Determina se o desenvolvedor precisa lidar especialmente com a ação DomainUpDown.UpButton() quando o texto de controle está presente. true para lidar com a açãoUpButton(); false para que as ações DomainUpDown.UpButton() e DomainUpDown.DownButton() estejam corretamente em sincronia. .NET Framework 4.7.2
Switch.System.Windows.Forms.
DontSupportReentrantFilterMessage
Opta por não usar o código que permite que uma implementação personalizada IMessageFilter.PreFilterMessage filtre mensagens com segurança sem gerar uma exceção quando o método Application.FilterMessage é chamado. Para saber mais, confira Mitigation: Custom IMessageFilter.PreFilterMessage Implementations (Mitigação: implementações personalizadas de IMessageFilter.PreFilterMessage). .NET Framework 4.6.1
Switch.System.Windows.Forms.
UseLegacyContextMenuStripSourceControlValue
Determina se a propriedade ContextMenuStrip.SourceControl retorna o controle de origem quando o usuário abre o menu de um controle aninhado ToolStripMenuItem. true para retornar null, o comportamento herdado; false para retornar o controle de origem. .NET Framework 4.7.2
Switch.System.Windows.Forms.UseLegacyToolTipDisplay Controla se o suporte à invocação da dica de ferramenta está desabilitado (true) ou habilitado (false). Habilitar o suporte à invocação de dica de ferramenta também requer funcionalidades de acessibilidade herdados definidos por Switch.UseLegacyAccessibilityFeatures, Switch.UseLegacyAccessibilityFeatures.2 e Switch.UseLegacyAccessibilityFeatures.3 todos serão desabilitados (definidos como false). .NET Framework 4.8
Switch.System.Windows.Input.Stylus.
EnablePointerSupport
Determina se uma pilha de toque/caneta baseada em opcionais WM_POINTER está habilitada em aplicativos do WPF. Para obter mais informações, consulte Mitigação: suporte a toque e caneta com base em ponteiro .NET Framework 4.7
Switch.System.Windows.Markup.
DoNotUseSha256ForMarkupCompilerChecksumAlgorithm
Determina se o algoritmo de hash padrão usado para somas de verificação é SHA256 (false) ou SHA1 (true).
Em razão de problemas de colisão com SHA1, a Microsoft recomenda SHA256.
.NET Framework 4.7.2
Switch.System.Windows.Media.ImageSourceConverter.
OverrideExceptionWithNullReferenceException
Controla se um NullReferenceException herdado é gerado em vez da exceção que indica mais especificamente a causa da exceção (como um DirectoryNotFoundException ou um FileNotFoundException. Destina-se ao uso por código que depende do tratamento de NullReferenceException. .NET Framework 4.7
Switch.System.Workflow.ComponentModel.
UseLegacyHashForXomlFileChecksum
Controla se o hash de soma de verificação de arquivos XOML em builds de projeto de fluxo de trabalho usa o algoritmo MD5 (true) ou se eles usam o algoritmo SHA256 introduzido como o padrão no .NET Framework 4.8.
Devido a problemas de colisão com o MD5, a Microsoft recomenda o SHA256.
.NET Framework 4.8
Switch.System.Workflow.Runtime.
UseLegacyHashForSqlTrackingCacheKey
Controla se o hash de soma de verificação do SqlTrackingService usa o algoritmo MD5 (true) para cadeias de caracteres armazenadas em cache ou se ele usa o algoritmo SHA256 introduzido como o padrão no .NET Framework 4.8.
Devido a problemas de colisão com o MD5, a Microsoft recomenda o SHA256.
.NET Framework 4.8
Switch.System.Workflow.Runtime.
UseLegacyHashForWorkflowDefinitionDispenserCacheKey
Controla se o hash de soma de verificação do Runtime de Fluxo de Trabalho usa o algoritmo MD5 (true) para definições de fluxo de trabalho em cache ou se ele usa o algoritmo SHA256 introduzido como o padrão no .NET Framework 4.8.
Devido a problemas de colisão com o MD5, a Microsoft recomenda o SHA256.
.NET Framework 4.8
Switch.UseLegacyAccessibilityFeatures Controla se as funcionalidades de acessibilidade disponíveis a partir do .NET Framework 4.7.1 estão habilitadas ou desabilitadas. .NET Framework 4.7.1
Switch.UseLegacyAccessibilityFeatures.2 Controla se as funcionalidades de acessibilidade disponíveis a partir do .NET Framework 4.7.2 estão habilitadas (false) ou desabilitadas (true). Se true, Switch.UseLegacyAccessibilityFeatures também deve ser true para habilitar funcionalidades de acessibilidade do .NET Framework 4.7.1. .NET Framework 4.7.2
Switch.UseLegacyAccessibilityFeatures.3 Controla se as funcionalidades de acessibilidade introduzidas no .NET Framework 4.8 estão habilitadas (false) ou desabilitadas (true). Se true, Switch.UseLegacyAccessibilityFeatures e Switch.UseLegacyAccessibilityFeatures.2 também deve ser true. .NET Framework 4.8
Switch.UseLegacyToolTipDisplay Controla se as dicas de ferramenta são exibidas quando um usuário passa o cursor do mouse sobre um controle do WPF (true) ou se elas são exibidas no foco do teclado e por meio da tecla de atalho de teclado (false, o comportamento padrão). Para aplicativos em execução no .NET Framework 4.8, mas voltados para versões anteriores do .NET Framework, habilitar o foco do teclado e o suporte à tecla de atalho requer que Switch.UseLegacyAccessibilityFeatures, Switch.UseLegacyAccessibilityFeatures.2 e Switch.UseLegacyAccessibilityFeatures.3 todos serão definidos como false. .NET Framework 4.8
Switch.System.Xml.
IgnoreEmptyKeySequences
Controla se as sequências de chaves vazias em chaves compostas são ignoradas pela validação do esquema XSD. Para obter mais informações, consulte Mitigação: validação do esquema XML. .NET Framework 4.6

Observação

Em vez de adicionar um elemento AppContextSwitchOverrides a um arquivo de configuração de aplicativo, você também pode definir as opções programaticamente chamando o método AppContext.SetSwitch.

Os desenvolvedores de biblioteca também podem definir opções personalizadas para permitir que os chamadores optem por não ter a funcionalidade alterada introduzida em versões posteriores das suas bibliotecas. Para obter mais informações, consulte a classe AppContext.

Opções em aplicativos ASP.NET

Você pode configurar um aplicativo ASP.NET para usar as configurações de compatibilidade adicionando um elemento <Adicionar> à seção <appSettings> do arquivo web.config.

O exemplo a seguir usa o elemento <add> para adicionar duas configurações à seção <appSettings> de um arquivo web.config:

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

Exemplo

O exemplo a seguir usa o elemento AppContextSwitchOverrides para definir uma única opção de compatibilidade de aplicativo, Switch.System.Globalization.NoAsyncCurrentCulture, que impede que a cultura flua entre threads em chamadas de método assíncrono.

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

O exemplo a seguir usa o elemento AppContextSwitchOverrides para definir duas opções de compatibilidade do aplicativo, Switch.System.Globalization.NoAsyncCurrentCulture e Switch.System.IO.BlockLongPaths. Um ponto e vírgula separa os dois pares de nome/valor.

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

Confira também