Alterações de tempo de execução para migração para o .NET Framework 4.8.x
Este artigo lista os problemas de compatibilidade de aplicativos que foram introduzidos no .NET Framework 4.8 e 4.8.1.
.NET Framework 4.8
ASP.NET
ASP.NET Corrigir o tratamento de InputAttributes e LabelAttributes para o controle CheckBox de WebForms
Detalhes
Para aplicativos destinados ao .NET Framework 4.7.2 e versões anteriores, CheckBox.InputAttributes e CheckBox.LabelAttributes que são programaticamente adicionados a um controle WebForms CheckBox são perdidos após o postback. Para aplicativos destinados ao .NET Framework 4.8 ou versões posteriores, eles são preservados após o postback.
Sugestão
Para obter o comportamento correto para restaurar atributos no postback, defina como targetFrameworkVersion
4.8 ou superior. Por exemplo:
<configuration>
<system.web>
<httpRuntime targetFramework="4.8"/>
</system.web>
</configuration>
Defini-lo mais baixo, ou não de todo, preserva o antigo comportamento incorreto.
Nome | Valor |
---|---|
Âmbito | Desconhecido |
Versão | 4.8 |
Type | Runtime |
APIs afetadas
ASP.NET O manuseio incorreto de várias partes pode resultar na perda de dados de formulário.
Detalhes
Em aplicativos destinados ao .NET Framework 4.7.2 e versões anteriores, ASP.NET podem analisar incorretamente valores de limite de várias partes, resultando em dados de formulário indisponíveis durante a execução da solicitação. Os aplicativos destinados ao .NET Framework 4.8 ou versões posteriores analisam corretamente os dados de várias partes, para que os valores de formulário estejam disponíveis durante a execução da solicitação.
Sugestão
Começando com aplicativos executados no .NET Framework 4.8, ao direcionar o .NET Framework 4.8 ou posterior usando o targetFrameworkVersion
elemento , o comportamento padrão muda para delimitadores de faixa. Ao direcionar versões anteriores da estrutura ou não usar targetFrameworkVersion
o , os delimitadores à direita para alguns valores ainda são retornados.
Esse comportamento também pode ser explicitamente controlado com um appSetting
:
<configuration>
<appSettings>
...
<add key="aspnet:UseLegacyMultiValueHeaderHandling" value="true"/>
...
</appSettings>
</configuration>
Nome | Valor |
---|---|
Âmbito | Desconhecido |
Versão | 4.8 |
Type | Runtime |
APIs afetadas
ASP.NET ValidationContext.MemberName não é NULL ao usar DataAnnotations.ValidationAttribute personalizado
Detalhes
No .NET Framework 4.7.2 e versões anteriores, ao usar um personalizado System.ComponentModel.DataAnnotations.ValidationAttribute, a ValidationContext.MemberName propriedade retorna null
. Na versão do .NET Framework 4.8 anterior à atualização de outubro de 2019, ele retorna o nome do membro. A partir do .NET Framework October 2019 Preview of Quality Rollup for .NET Framework 4.8, ele retorna null
por padrão, mas você pode optar por retornar o nome do membro.
Sugestão
Adicione a seguinte configuração ao seu arquivo web.config para que a propriedade retorne o nome do membro no .NET Framework outubro de 2019 Preview of Quality Rollup for .NET Framework 4.8 e versões posteriores:
<configuration>
<appSettings>
...
<add key="aspnet:GetValidationMemberName" value="true"/>
...
</appSettings>
</configuration>
Na versão do .NET Framework 4.8 anterior à atualização de outubro de 2019, adicionar isso ao arquivo web.config restaura o comportamento anterior e a propriedade retorna null
.
Nome | Valor |
---|---|
Âmbito | Desconhecido |
Versão | 4.8 |
Type | Runtime |
APIs afetadas
Principal
O .NET COM controla com êxito os parâmetros ByRef SafeArray em eventos
Detalhes
No .NET Framework 4.7.2 e versões anteriores, um parâmetro ByRef SafeArray em um evento COM falharia ao empacotar de volta para o código nativo. Com esta alteração, o SafeArray é agora organizado com êxito.
- [ x ] Peculiar
Sugestão
Se a organização correta dos parâmetros ByRef SafeArray em Eventos COM interromper a execução, você poderá desabilitar esse código adicionando a seguinte opção de configuração à configuração do aplicativo:
<appSettings>
<add key="Switch.System.Runtime.InteropServices.DoNotMarshalOutByrefSafeArrayOnInvoke" value="true" />
</appSettings>
Nome | Valor |
---|---|
Âmbito | Menor |
Versão | 4.8 |
Type | Runtime |
APIs afetadas
Não detetável através da análise API.
A interoperabilidade do .NET agora será QueryInterface for IAgileObject (uma interface WinRT)
Detalhes
Ao usar um evento WinRT com um delegado .NET, o Windows fará QI para IAgileObject começando com .NET Framework 4.8. Em versões anteriores do .NET Framework, o tempo de execução falharia nesse QI e o evento não pôde ser inscrito.
- [ x ] Peculiar
Sugestão
Se habilitar o QI para IAgileObject interrompe a execução, você pode desativar esse código definindo a seguinte configuração.
Método 1: Variável de ambiente
Defina a seguinte variável de ambiente: COMPLUS_DisableCCWSupportIAgileObject=1
Esse método afeta qualquer ambiente que herda essa variável de ambiente. Isso pode ser apenas uma única sessão de console ou pode afetar toda a máquina se você definir a variável de ambiente globalmente. O nome da variável de ambiente não diferencia maiúsculas de minúsculas.
Método 2: Registo
Usando o Editor do Registro (regedit.exe), localize uma das seguintes subchaves:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework
- HKEY_CURRENT_USER\SOFTWARE\Microsoft.NETFramework
Em seguida, adicione a seguinte entrada:
Nome: DisableCCWSupportIAgileObject Tipo: Valor DWORD (32 bits) (também chamado de REG_DWORD) Dados: 1
Você pode usar a ferramenta Windows REG.EXE para adicionar esse valor de uma linha de comando ou ambiente de script. Por exemplo:
reg add HKLM\SOFTWARE\Microsoft.NETFramework /v DisableCCWSupportIAgileObject /t REG_DWORD /d 1
Neste caso, HKLM
é usado em vez de HKEY_LOCAL_MACHINE
. Use reg add /?
para ver ajuda sobre esta sintaxe. O nome do valor do Registro não diferencia maiúsculas de minúsculas.
Nome | Valor |
---|---|
Âmbito | Edge |
Versão | 4.8 |
Type | Runtime |
APIs afetadas
Não detetável através da análise API.
Windows Communication Foundation (WCF)
svcTraceViewer ComboBox mudança de alto contraste
Detalhes
Na ferramenta Microsoft Service Trace Viewer, os controles ComboBox não foram exibidos na cor correta em determinados temas de alto contraste. O problema foi corrigido no .NET Framework 4.7.2. No entanto, devido aos requisitos de compatibilidade com versões anteriores do SDK do .NET Framework, a correção não era visível para os clientes por padrão. O .NET 4.8 apresenta essa alteração adicionando as seguintes opções de configuração do AppContext ao arquivo svcTraceViewer.exe.config:
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false" />
Sugestão
Se você não quiser que o comportamento de alto contraste seja alterado, desative-o removendo a seguinte seção do arquivo svcTraceViewer.exe.config:
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false" />
Nome | Valor |
---|---|
Âmbito | Edge |
Versão | 4.8 |
Type | Runtime |
APIs afetadas
Não detetável através da análise API.
Windows Presentation Foundation (WPF)
Melhoria da vinculação de dados para KeyedCollection
Detalhes
Corrigido Binding o uso incorreto do indexador IList quando o objeto de origem declara um indexador personalizado com a mesma assinatura (por exemplo, KeyedCollection<int,TItem>
).
Sugestão
Para que um aplicativo destinado a uma versão mais antiga se beneficie dessa alteração, ele deve ser executado no .NET Framework 4.8 ou posterior e deve aceitar a alteração adicionando a seguinte opção AppContext à <runtime>
seção do arquivo de configuração do aplicativo e definindo-a como false
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/>
</startup>
<runtime>
<!-- AppContextSwitchOverrides value attribute is in the form of key1=true/false;key2=true/false -->
<AppContextSwitchOverrides value="Switch.System.Windows.Data.Binding.IListIndexerHidesCustomIndexer=false" />
</runtime>
</configuration>
Nome | Valor |
---|---|
Âmbito | Principal |
Versão | 4.8 |
Type | Runtime |
APIs afetadas
Não detetável através da análise API.
Corrigido um problema quando ListBox para de responder se ele contém tipos de valor duplicados
Detalhes
Corrigido um problema em que uma virtualização ItemsControl podia parar de responder durante a rolagem quando sua Items
coleção continha objetos duplicados digitados por valores.
Nome | Valor |
---|---|
Âmbito | Principal |
Versão | 4.8 |
Type | Runtime |
APIs afetadas
Não detetável através da análise API.
Melhorias no algoritmo de alocação de espaço de linhas de estrelas do Grid
Detalhes
Corrigido um bug no algoritmo para alocar tamanhos para) em um Grid introduzido no .NET Framework 4.7. Em alguns casos, como uma Grade com Height="Auto"
linhas vazias, as linhas foram organizadas na posição errada, possivelmente fora da Grade completamente.
Sugestão
Para que o aplicativo se beneficie dessas alterações, ele deve ser executado no .NET Framework 4.8 ou posterior.
Nome | Valor |
---|---|
Âmbito | Principal |
Versão | 4.8 |
Type | Runtime |
APIs afetadas
Não detetável através da análise API.
Melhoria da navegação pelo teclado na ListBox com hiperligações
Detalhes
Corrigido resultado incorreto de pressionar uma tecla de seta quando o foco está em um hiperlink dentro de um item que não é o item selecionado do pai ItemsControl.
Nome | Valor |
---|---|
Âmbito | Principal |
Versão | 4.8 |
Type | Runtime |
APIs afetadas
Não detetável através da análise API.
Melhoria de desempenho na árvore de automação para agrupamento de ItemsControls
Detalhes
Melhorou o desempenho da reconstrução da árvore de automação de um ItemsControl, como ListBox ou DataGrid, no qual o agrupamento está habilitado.
Nome | Valor |
---|---|
Âmbito | Principal |
Versão | 4.8 |
Type | Runtime |
APIs afetadas
Não detetável através da análise API.
.NET Framework 4.8.1
Nenhum problema de compatibilidade de aplicativo foi introduzido no .NET Framework 4.8.1.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários