Redirecionamento de alterações 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
Núcleo
As classes de criptografia gerenciadas não lançam uma CryptographyException no modo FIPS
Detalhes
No .NET Framework 4.7.2 e versões anteriores, classes de provedor de criptografia gerenciadas, como SHA256Managed lançam um CryptographicException quando as bibliotecas criptográficas do sistema são configuradas no modo FIPS. Essas exceções são lançadas porque as versões gerenciadas não passaram pela certificação FIPS (Federal Information Processing Standards) 140-2, bem como para bloquear algoritmos criptográficos que não foram considerados aprovados com base nas regras FIPS. Como poucos desenvolvedores têm suas máquinas de desenvolvimento no modo FIPS, essas exceções são frequentemente lançadas apenas em sistemas de produção. Os aplicativos destinados ao .NET Framework 4.8 e versões posteriores alternam automaticamente para a política mais recente e relaxada, para que um CryptographicException não seja mais lançado por padrão nesses casos. Em vez disso, as classes de criptografia gerenciadas redirecionam operações criptográficas para uma biblioteca de criptografia do sistema. Essa alteração de política remove efetivamente uma diferença potencialmente confusa entre os ambientes de desenvolvedor e os ambientes de produção e faz com que os componentes nativos e os componentes gerenciados operem sob a mesma política criptográfica.
Sugestão
Se esse comportamento for indesejável, pode optar por desativá-lo e restaurar o comportamento anterior, de forma que um
<runtime>
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=true" />
</runtime>
Se a sua aplicação tiver como alvo o .NET Framework 4.7.2 ou anterior, pode também optar por esta alteração adicionando a seguinte definição de configuração AppContextSwitchOverrides à seção <runtime> do ficheiro de configuração da aplicação:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Nome | Valor |
---|---|
Âmbito de aplicação | Borda |
Versão | 4.8 |
Tipo | Redirecionamento |
APIs afetadas
- System.Security.Cryptography.AesManaged
- System.Security.Cryptography.MD5Cng
- System.Security.Cryptography.MD5CryptoServiceProvider
- System.Security.Cryptography.RC2CryptoServiceProvider
- System.Security.Cryptography.RijndaelManaged
- System.Security.Cryptography.RIPEMD160Managed
- System.Security.Cryptography.SHA1Managed
- System.Security.Cryptography.SHA256Managed
Formulários do Windows
Melhorias de acessibilidade nos controles do Windows Forms para .NET 4.8
Detalhes
O Windows Forms Framework continua a melhorar a forma como funciona com tecnologias de acessibilidade para oferecer melhor suporte aos clientes do Windows Forms. Estas incluem as seguintes alterações:
- Alterações para melhorar o ecrã durante o modo de Alto Contraste.
- Alterações na interação com o Narrador.
- Alterações na hierarquia Acessível (melhorando a navegação através da árvore de Automação da Interface do Usuário).
Sugestão
Como aceitar ou não essas alterações Para que o aplicativo se beneficie dessas alterações, ele deve ser executado no .NET Framework 4.8. O aplicativo pode aceitar essas alterações de uma das seguintes maneiras:
- É recompilado para ter como alvo o .NET Framework 4.8. Essas alterações de acessibilidade são habilitadas por padrão em aplicativos Windows Forms destinados ao .NET Framework 4.8.
- Ele tem como alvo o .NET Framework 4.7.2 ou versão anterior e exclui os comportamentos de acessibilidade herdados adicionando a seguinte opção AppContext à seção
<runtime>
do arquivo de configuração do aplicativo e definindo-o comofalse
, como mostra o exemplo a seguir.
<?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.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false" />
</runtime>
</configuration>
Observe que para aceitar os recursos de acessibilidade adicionados no .NET Framework 4.8, você também deve optar pelos recursos de acessibilidade do .NET Framework 4.7.1 e 4.7.2. Os aplicativos destinados ao .NET Framework 4.8 e que desejam preservar o comportamento de acessibilidade herdado podem optar pelo uso de recursos de acessibilidade herdados definindo explicitamente essa opção AppContext como true
. Habilitar o suporte à invocação da dica de ferramenta do teclado requer a adição da linha Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false
ao valor AppContextSwitchOverrides:
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false" />
Observe que habilitar esse recurso requer aceitar os recursos de acessibilidade acima mencionados do .NET Framework 4.7.1 - 4.8. Além disso, se algum dos recursos de acessibilidade não estiver ativado, mas o recurso de exibição de dica de ferramenta estiver ativado, será gerada uma exceção NotSupportedException em tempo de execução na primeira tentativa de acesso a esses recursos. A mensagem de exceção indica que as Dicas de Ferramenta do teclado requerem melhorias de acessibilidade de nível 3 para serem ativadas.
Uso de cores definidas pelo sistema operacional em temas de alto contraste
- Temas de alto contraste melhorados.
Suporte melhorado do Narrador
- Narrador agora anuncia a direção de ordenação do DataGridViewColumn quando anuncia um nome acessível de um DataGridViewCell.
Suporte melhorado de acessibilidade do "CheckedListBox"
- Suporte melhorado do Narrador para o controlo CheckedListBox. Ao navegar para o controle de CheckedListBox usando o teclado, o Narrador foca o item CheckedListBox e o anuncia.
- Um controle CheckedListBox vazio agora tem um retângulo de foco desenhado para um primeiro item virtual quando o controle se torna focado.
Melhoria do suporte de acessibilidade do ComboBox
Ativou-se o suporte para a Automação da Interface do Usuário no controlo ComboBox, com a capacidade de usar notificações e outros recursos de automação da interface do utilizador. Suporte melhorado de acessibilidade DataGridView
Habilitado suporte à Automação da Interface de Utilizador para o controlo DataGridView, com capacidade de usar notificações de Automação da Interface e outros recursos de automação da interface.
O elemento de automação da interface do usuário que corresponde ao DataGridViewComboBoxEditingControl ou DataGridViewTextBoxEditingControl agora é filho da célula de edição correspondente.
Suporte melhorado de acessibilidade para o LinkLabel
- Acessibilidade de controle de LinkLabel aprimorada: o Narrador anuncia o estado desativado para o link se o controle de LinkLabel correspondente estiver desativado.
Melhorou o suporte de acessibilidade da ProgressBar
- Ativada a automação da interface do utilizador para o controlo ProgressBar, com a capacidade de usar notificações de automação da interface do utilizador e outras funcionalidades de automação. Os desenvolvedores agora podem usar notificações de automação da interface do usuário que o Narrador pode anunciar para indicar o progresso. Para obter uma visão geral dos eventos de automação da interface do usuário, incluindo eventos de notificação de automação da interface do usuário, consulte a Visão geral dos eventos de automação da interface do usuário .
Acessibilidade aprimorada do PropertyGrid
- Ativado o suporte à Automação da Interface do Utilizador para o controlo PropertyGrid, com a capacidade de usar notificações de Automação da Interface do Utilizador e outros recursos da mesma.
- O elemento de Automação da Interface do Utilizador que corresponde à propriedade atualmente editada agora é um subelemento do elemento de Automação da Interface do Utilizador do item de propriedade correspondente.
- O elemento de propriedade de automação da interface do usuário agora é filho do elemento de categoria correspondente se o controlo principal PropertyGrid estiver definido para vista de categoria.
Suporte melhorado ao ToolStrip
- Suporte habilitado à Automação da Interface do Usuário para o controle de ToolStrip, com a capacidade de usar notificações de Automação da Interface do Usuário e outros recursos de Automação da Interface do Usuário.
- Navegação melhorada nos itens ToolStrip.
- No modo de itens, o foco do Narrador não desaparece e não vai para itens ocultos.
Sinais visuais melhorados
- Um controle de CheckedListBox vazio agora exibe um indicador de foco quando recebe foco. Nota: O suporte à automação da interface do usuário está habilitado para controles em tempo de execução, mas não é usado em tempo de design. Para obter uma visão geral da automação da interface do usuário, consulte a Visão geral da automação da interface do usuário .
Invocando as dicas de ferramentas dos controles com um teclado
- Agora é possível ativar a dica de ferramenta de controlo ao focar o controlo através do teclado. Este recurso precisa ser habilitado explicitamente para o aplicativo (consulte a seção "Como aceitar ou desativar essas alterações")
Nome | Valor |
---|---|
Âmbito de aplicação | Major: |
Versão | 4.8 |
Tipo | Redirecionamento |
Windows Presentation Foundation (WPF)
Melhorias de acessibilidade no WPF
Detalhes
Melhorias de alto contraste
- O foco no controlo Expander agora é visível. Em versões anteriores do .NET Framework, não era.
- O texto nos controles CheckBox e RadioButton quando eles são selecionados agora é mais fácil de ver do que em versões anteriores do .NET Framework.
- A borda de um ComboBox desativado agora é da mesma cor do texto desativado. Em versões anteriores do .NET Framework, não era.
- Os botões desativados e focados agora usam a cor correta do tema. Em versões anteriores do .NET Framework, isso não acontecia.
- O botão suspenso agora fica visível quando o estilo de um controle ComboBox é definido como ToolBar.ComboBoxStyleKey. Em versões anteriores do .NET Framework, não era.
- A seta do indicador de classificação em um controle DataGrid agora usa cores de tema. Em versões anteriores do .NET Framework, isso não acontecia.
- O estilo de hiperlink padrão agora muda para a cor correta do tema ao passar o mouse. Em versões anteriores do .NET Framework, isso não acontecia.
- O foco do teclado nos botões de opção agora está visível. Em versões anteriores do .NET Framework, não era.
- A coluna da caixa de seleção do controle DataGrid agora usa as cores esperadas para comentários sobre o foco do teclado. Em versões anteriores do .NET Framework, isso não acontecia.
- os visuais de foco do teclado agora estão visíveis nos controles ComboBox e ListBox. Em versões anteriores do .NET Framework, não era.
Melhorias na interação do leitor de tela
- Expander controles agora são anunciados corretamente como grupos (expandir/recolher) pelos leitores de tela.
- Os controlos DataGridCell são agora anunciados corretamente como célula de grelha de dados (localizada) pelos leitores de tela.
- Os leitores de tela agora anunciarão o nome de um ComboBoxeditável.
- PasswordBox controles não são mais anunciados como "nenhum item em exibição" pelos leitores de tela.
Suporte LiveRegion
Os leitores de tela, como o Narrador, ajudam as pessoas a entender a interface do usuário (UI) de um aplicativo, geralmente descrevendo o elemento da interface do usuário que atualmente tem foco. No entanto, se um elemento da interface do usuário mudar em algum lugar na tela e não tiver o foco, o usuário pode não ser informado e perder informações importantes. LiveRegions destinam-se a resolver este problema. Um desenvolvedor pode usá-los para informar o leitor de tela ou qualquer outro cliente UI Automation que uma alteração importante foi feita em um elemento da interface do usuário. O leitor de ecrã pode então decidir como e quando informar o utilizador desta alteração. A propriedade LiveSetting também permite que o leitor de tela saiba o quão importante é informar o usuário sobre a alteração feita na interface do usuário.
Sugestão
Como optar por participar ou não destas alterações
Para que o aplicativo se beneficie dessas alterações, ele deve ser executado no .NET Framework 4.7.1 ou posterior. O aplicativo pode se beneficiar dessas alterações de uma das seguintes maneiras:
Apontar para .NET Framework 4.7.1. Esta é a abordagem recomendada. Essas alterações de acessibilidade são habilitadas por padrão em aplicativos WPF destinados ao .NET Framework 4.7.1 ou posterior.
Ele desativa os comportamentos de acessibilidade herdados adicionando o seguinte AppContext Switch na seção
<runtime>
do arquivo de configuração do aplicativo e definindo-o comofalse
, como mostra o exemplo a seguir.<?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.UseLegacyAccessibilityFeatures=false" /> </runtime> </configuration>
Os aplicativos destinados ao .NET Framework 4.7.1 ou posterior e que desejam preservar o comportamento de acessibilidade herdado podem optar pelo uso de recursos de acessibilidade herdados definindo explicitamente essa opção AppContext como true
.
Para obter uma visão geral da automação da interface do usuário, consulte Visão geral da automação da interface do usuário .
Nome | Valor |
---|---|
Âmbito de aplicação | Major: |
Versão | 4.7.1 |
Tipo | Redirecionamento |
APIs afetadas
- AutomationElementIdentifiers.LiveSettingProperty
- AutomationElementIdentifiers.LiveRegionChangedEvent
- System.Windows.Automation.AutomationLiveSetting
- AutomationProperties.LiveSettingProperty
- AutomationProperties.SetLiveSetting(DependencyObject, AutomationLiveSetting)
- AutomationProperties.GetLiveSetting(DependencyObject)
- AutomationPeer.GetLiveSettingCore()
Adicionar a propriedade pública SelectionTextBrush para a seleção sem adornos em TextBox/PasswordBox
Detalhes
Em aplicativos WPF que usam de seleção de texto não baseada em adorner para TextBox e PasswordBox, os desenvolvedores agora podem definir a propriedade SelectionTextBrush recém-adicionada para alterar a renderização do texto selecionado. Por padrão, essa cor muda com HighlightTextBrushKey. Se a seleção de texto não baseada em adorno não estiver habilitada, essa propriedade não fará nada.
Sugestão
Depois que a seleção de texto não baseada em adorno estiver habilitada, você poderá usar a propriedade PasswordBox.SelectionTextBrush e SelectionTextBrush para alterar a aparência do texto selecionado. Isso pode ser feito usando XAML:
<TextBox SelectionBrush="Red" SelectionTextBrush="White" SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
Nome | Valor |
---|---|
Âmbito de aplicação | Major: |
Versão | 4.8 |
Tipo | Redirecionamento |
APIs afetadas
- TextBoxBase.SelectionTextBrushProperty
- TextBoxBase.SelectionTextBrush
- System.Windows.Controls.TextBox
- System.Windows.Controls.PasswordBox
HwndHost agora redimensiona corretamente child-HWND durante alterações de DPI
Detalhes
No .NET Framework 4.7.2 e versões anteriores, quando o WPF era executado no modo Per-Monitor Aware, os controles hospedados no HwndHost não eram dimensionados corretamente após alterações de DPI, como ao mover aplicativos de um monitor para outro. Essa correção garante que os controles hospedados sejam dimensionados adequadamente.
Sugestão
Para que o aplicativo se beneficie dessas alterações, ele deve ser executado no .NET Framework 4.7.2 ou posterior e deve optar por esse comportamento definindo o seguinte AppContext Switch na seção <runtime>
do arquivo de configuração do aplicativo como false
, como mostra o exemplo a seguir.
<?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.DoNotUsePresentationDpiCapabilityTier2OrGreater=false" />
</runtime>
</configuration>
Nome | Valor |
---|---|
Âmbito de aplicação | Major: |
Versão | 4.8 |
Tipo | Redirecionamento |
Windows Workflow Foundation (WF)
Melhorias de acessibilidade no designer de fluxo de trabalho do Windows Workflow Foundation (WF)
Detalhes
O designer de fluxo de trabalho do Windows Workflow Foundation (WF) está melhorando a forma como funciona com tecnologias de acessibilidade. Essas melhorias incluem as seguintes alterações:
- A ordem de tabulação é alterada para a esquerda para a direita e de cima para baixo em alguns controles:
- A janela de inicialização da correlação para definir dados de correlação para a atividade InitializeCorrelation
- A janela de definição de conteúdo para as atividades Receive, Send, SendReplye ReceiveReply
- Mais funções estão disponíveis através do teclado:
- Ao editar as propriedades de uma atividade, os grupos de propriedades podem ser recolhidos pelo teclado na primeira vez que estiverem focados.
- Os ícones de aviso agora estão acessíveis pelo teclado.
- O botão Mais Propriedades na janela Propriedades agora está acessível pelo teclado.
- Os usuários do teclado agora podem acessar os itens de cabeçalho nos painéis Argumentos e Variáveis do Designer de Fluxo de Trabalho.
- Melhoria da visibilidade dos itens em foco, como quando:
- Adicionar linhas a grades de dados usadas pelo Designer de Fluxo de Trabalho e designers de atividades.
- Tabulação pelos campos nas atividades ReceiveReply e SendReply.
- Definindo valores padrão para variáveis ou argumentos
- Os leitores de tela agora podem reconhecer corretamente:
- Pontos de interrupção definidos no designer de fluxo de trabalho.
- As atividades FlowSwitch<T>, FlowDecisione CorrelationScope.
- O conteúdo da atividade Receive.
- O Tipo de Alvo para a atividade InvokeMethod.
- A caixa de combinação Exceção e a seção Finalmente na atividade TryCatch.
- A caixa de combinação Tipo de Mensagem, o divisor na janela Adicionar Inicializadores de Correlação, a janela Definição de Conteúdo e a janela CorrelatesOn Defintion nas atividades de mensagens (Receive, Send, SendReplye ReceiveReply).
- Transições de máquina de estado e destinos das transições.
- Anotações e conectores nas atividades FlowDecision.
- Os menus de contexto (clique com o botão direito do mouse) para atividades.
- Os editores de valor de propriedade, o botão Limpar pesquisa, os botões Por categoria e Classificação alfabética e a caixa de diálogo Editor de expressões na grade de propriedades.
- A porcentagem de zoom no Designer de Fluxo de Trabalho.
- O separador nas atividades Parallel e Pick.
- A InvokeDelegate atividade.
- A janela Selecionar tipos para atividades de dicionário (
Microsoft.Activities.AddToDictionary<TKey,TValue>
,Microsoft.Activities.RemoveFromDictionary<TKey,TValue>
, etc.). - A janela para Procurar e Selecionar Tipo .NET.
- Navegação no Designer de Fluxo de Trabalho.
- Os usuários que escolherem temas de Alto Contraste verão muitas melhorias na visibilidade do Designer de Fluxo de Trabalho e seus controles, como melhores relações de contraste entre elementos e caixas de seleção mais percetíveis usadas para elementos de foco.
Sugestão
Se você tiver um aplicativo com um designer de fluxo de trabalho rehospedado, seu aplicativo poderá se beneficiar dessas alterações executando uma destas ações:
- Recompile seu aplicativo para direcionar o .NET Framework 4.7.1. Essas alterações de acessibilidade são habilitadas por padrão.
- Se seu aplicativo tem como alvo o .NET Framework 4.7 ou anterior, mas está sendo executado no .NET Framework 4.7.1, você pode desativar esses comportamentos de acessibilidade herdados adicionando a seguinte opção AppContext à seção
<runtime>
do arquivo app.config e defini-lo comofalse
, como mostra o exemplo a seguir.
<?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.UseLegacyAccessibilityFeatures=false" />
</runtime>
</configuration>
Os aplicativos destinados ao .NET Framework 4.7.1 ou posterior e desejam preservar o comportamento de acessibilidade herdado podem optar pelo uso de recursos de acessibilidade herdados definindo explicitamente essa opção AppContext como true
.
Nome | Valor |
---|---|
Âmbito de aplicação | Menor |
Versão | 4.7.1 |
Tipo | Redirecionamento |
Somas de verificação XAML do fluxo de trabalho para símbolos alterados de SHA1 para SHA256
Detalhes
Para dar suporte à depuração com o Visual Studio, o tempo de execução do fluxo de trabalho gera uma soma de verificação para um arquivo XAML do fluxo de trabalho usando um algoritmo de hash. No .NET Framework 4.6.2 e versões anteriores, o hash de soma de verificação do fluxo de trabalho usava o algoritmo MD5, o que causava problemas em sistemas habilitados para FIPS. A partir do .NET Framework 4.7, o algoritmo padrão foi alterado para SHA1. A partir do .NET Framework 4.8, o algoritmo padrão foi alterado para SHA256.
Sugestão
Se o seu código não conseguir carregar instâncias de fluxo de trabalho ou encontrar símbolos apropriados devido a uma falha na verificação de soma, tente definir a configuração AppContext
"Switch.System.Activities.UseSHA1HashForDebuggerSymbols" para true
. No código:
System.AppContext.SetSwitch("Switch.System.Activities.UseSHA1HashForDebuggerSymbols", true);
Ou na configuração:
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
</runtime>
</configuration>
Nome | Valor |
---|---|
Âmbito de aplicação | Menor |
Versão | 4.8 |
Tipo | Redirecionamento |
Definição de XOML do fluxo de trabalho e chaves de cache SqlTrackingService alteradas de MD5 para SHA256
Detalhes
O Workflow Runtime in mantém um cache de definições de fluxo de trabalho definidas no XOML. O SqlTrackingService também mantém um cache que é chaveado por cadeias de caracteres. Esses caches são chaveados por valores que incluem o valor de hash da soma de verificação. No .NET Framework 4.7.2 e versões anteriores, esse hash de soma de verificação usava o algoritmo MD5, que causava problemas em sistemas habilitados para FIPS. Começando com o .NET Framework 4.8, o algoritmo usado é SHA256. Não deve haver um problema de compatibilidade com essa alteração porque os valores são recalculados cada vez que o Workflow Runtime e o SqlTrackingService são iniciados. No entanto, fornecemos peculiaridades para permitir que os clientes voltem ao uso do algoritmo de hash herdado, se necessário.
Sugestão
Se essa alteração apresentar um problema ao executar fluxos de trabalho, tente definir uma ou ambas as opções de AppContext
:
- Defina "Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey" para true.
- "Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey" definir como verdadeiro. No código:
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey", true);
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey", true);
Ou no arquivo de configuração (isso precisa estar no arquivo de configuração do aplicativo que está criando o objeto WorkflowRuntime):
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey=true" />
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKeytrue" />
</runtime>
</configuration>
Nome | Valor |
---|---|
Âmbito de aplicação | Menor |
Versão | 4.8 |
Tipo | Redirecionamento |
Somas de verificação do arquivo XOML do fluxo de trabalho alteradas de MD5 para SHA256
Detalhes
Para dar suporte à depuração de fluxos de trabalho baseados em XOML com o Visual Studio, quando projetos de fluxo de trabalho contendo arquivos XOML são compilados, uma soma de verificação do conteúdo do arquivo XOML é incluída no código gerado como um valor WorkflowMarkupSourceAttribute.MD5Digest. No .NET Framework 4.7.2 e versões anteriores, esse hash de soma de verificação usava o algoritmo MD5, que causava problemas em sistemas habilitados para FIPS. Começando com o .NET Framework 4.8, o algoritmo usado é SHA256. Para ser compatível com o WorkflowMarkupSourceAttribute.MD5Digest, apenas os primeiros 16 bytes da soma de verificação gerada são usados. Isso pode causar problemas durante a depuração. Pode ser necessário reconstruir seu projeto.
Sugestão
Se a reconstrução do projeto não resolver o problema, tente definir o interruptor AppContext
"Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum" como verdadeiro. No seu código:
System.AppContext.SetSwitch("Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum", true);
Ou em um arquivo de configuração (isso precisa estar em MSBuild.exe.config para o MSBuild.exe que você está usando):
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
Nome | Valor |
---|---|
Âmbito de aplicação | Menor |
Versão | 4.8 |
Tipo | Redirecionamento |
.NET Framework 4.8.1
Nenhum problema de compatibilidade de aplicativo foi introduzido no .NET Framework 4.8.1.