Partager via


Modifications de reciblage pour la migration vers .NET Framework 4.8.x

Cet article répertorie les problèmes de compatibilité des applications qui ont été introduits dans .NET Framework 4.8 et 4.8.1.

.NET Framework 4.8

Principal

Les classes de cryptographie gérées ne déclenchent pas de CryptographyException en mode FIPS.

Détails

Dans .NET Framework 4.7.2 et versions antérieures, les classes de fournisseur de chiffrement managées telles que SHA256Managed génèrent une exception CryptographicException lorsque les bibliothèques de chiffrement système sont configurées en mode FIPS. Ces exceptions sont levées, car les versions managées n’ont pas subi de certification FIPS (Federal Information Processing Standards) 140-2, ainsi que pour bloquer les algorithmes de chiffrement qui n’ont pas été considérés comme approuvés en fonction des règles FIPS. Étant donné que peu de développeurs ont leurs machines de développement en mode FIPS, ces exceptions sont fréquemment levées uniquement sur les systèmes de production. Les applications qui ciblent .NET Framework 4.8 et versions ultérieures basculent automatiquement vers la stratégie plus récente et souple, afin qu’une CryptographicException ne soit plus levée par défaut dans de tels cas. Au lieu de cela, les classes de chiffrement managé redirigent les opérations de chiffrement vers une bibliothèque de chiffrement système. Cette modification de stratégie supprime efficacement une différence potentiellement déroutante entre les environnements de développement et les environnements de production et rend les composants natifs et les composants managés fonctionnent sous la même stratégie de chiffrement.

Suggestion

Si ce comportement n'est pas souhaitable, vous pouvez le désactiver et restaurer le comportement précédent afin qu'un CryptographicException soit lancé en mode FIPS en ajoutant le paramètre de configuration AppContextSwitchOverrides suivant à la section <runtime> de votre fichier de configuration d'application.

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=true" />
</runtime>

Si votre application cible .NET Framework 4.7.2 ou antérieur, vous pouvez aussi choisir d’adhérer à ce changement en ajoutant le paramètre de configuration AppContextSwitchOverrides suivant dans la section <runtime> de votre fichier de configuration d’application :

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Nom Valeur
Portée Microsoft Edge
Version 4.8
Catégorie Reciblage

API affectées

Windows Forms

Améliorations de l’accessibilité dans les contrôles Windows Forms pour .NET 4.8

Détails

Le Framework Windows Forms continue d’améliorer son fonctionnement avec les technologies d’accessibilité pour mieux prendre en charge les clients Windows Forms. Il s’agit notamment des modifications suivantes :

  • Modifications pour améliorer l’affichage en mode Contraste élevé.
  • Modifications apportées à l’interaction avec le Narrateur.
  • Modifications apportées à la hiérarchie accessible (amélioration de la navigation dans l’arborescence UI Automation).

Suggestion

Comment accepter ou refuser ces modifications Pour que l’application bénéficie de ces modifications, elle doit s’exécuter sur .NET Framework 4.8. L’application peut accepter ces modifications de l’une des manières suivantes :

  • Il est recompilé pour cibler le .NET Framework 4.8. Ces modifications d’accessibilité sont activées par défaut sur les applications Windows Forms qui ciblent le .NET Framework 4.8.
  • Faites-lui cibler .NET Framework version 4.7.2 ou antérieure et cessez d’adhérer aux comportements d’accessibilité existants, en ajoutant le commutateur AppContext suivant dans la section <runtime> du fichier de configuration de l’application et en lui affectant la valeur false, comme dans l’exemple suivant.
<?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>

Notez que pour choisir les fonctionnalités d’accessibilité ajoutées dans .NET Framework 4.8, vous devez également opter pour les fonctionnalités d’accessibilité de .NET Framework 4.7.1 et 4.7.2. Les applications qui ciblent .NET Framework 4.8 et souhaitent conserver le comportement d’accessibilité hérité peuvent choisir d’utiliser les fonctionnalités d’accessibilité héritées en définissant explicitement ce commutateur AppContext sur true. L’activation de la prise en charge de l’appel d’info-bulles clavier nécessite l’ajout de la ligne Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false à la valeur AppContextSwitchOverrides :

<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false" />

Notez que l’activation de cette fonctionnalité nécessite de choisir les fonctionnalités d’accessibilité mentionnées ci-dessus de .NET Framework 4.7.1 - 4.8. En outre, si l’une des fonctionnalités d’accessibilité n’est pas choisie, mais que la fonctionnalité d’affichage de l’info-bulle est activée, une erreur runtime NotSupportedException sera déclenchée au premier accès à ces fonctionnalités. Le message d’exception indique que les info-bulles clavier nécessitent des améliorations de l’accessibilité du niveau 3 pour être activées.

Utilisation de couleurs définies par le système d’exploitation dans les thèmes à contraste élevé

  • Amélioration des thèmes à contraste élevé.

Prise en charge améliorée du Narrateur

Prise en charge améliorée de l’accessibilité de CheckedListBox

  • Prise en charge améliorée du Narrateur pour le contrôle CheckedListBox. Quand vous accédez au contrôle CheckedListBox à l’aide du clavier, le Narrateur se focalise sur l’élément CheckedListBox et l’annonce.
  • Un contrôle CheckedListBox vide a maintenant un rectangle dessiné pour un premier élément virtuel quand le contrôle a le focus.

Prise en charge améliorée de l’accessibilité de ComboBox

  • Activation du support d’UI Automation pour le contrôle ComboBox, avec la possibilité d’utiliser des notifications d'UI Automation et d’autres fonctionnalités d'UI Automation. Prise en charge améliorée de l'accessibilité pour DataGridView

  • Activation de la prise en charge d’UI Automation pour le contrôle DataGridView avec la possibilité d’utiliser les notifications UI Automation et autres fonctionnalités UI Automation.

  • L'élément UI Automation qui correspond à DataGridViewComboBoxEditingControl ou DataGridViewTextBoxEditingControl est maintenant un enfant de la cellule d'édition correspondante.

Amélioration de la prise en charge de l'accessibilité pour LinkLabel

  • Amélioration de l’accessibilité du contrôle LinkLabel : le Narrateur annonce l’état désactivé du lien si le contrôle LinkLabel correspondant est désactivé.

Prise en charge améliorée de l’accessibilité de ProgressBar

  • Activation de la prise en charge d’UI Automation pour le contrôle ProgressBar avec la possibilité d’utiliser les notifications UI Automation et autres fonctionnalités UI Automation. Les développeurs peuvent désormais utiliser des notifications UI Automation que le Narrateur peut annoncer pour indiquer la progression. Pour une vue d’ensemble des événements UI Automation, notamment les événements de notification, consultez la Vue d’ensemble des événements UI Automation.

Amélioration de la prise en charge de l'accessibilité de PropertyGrid

  • Activation du support d’UI Automation pour le contrôle PropertyGrid, avec la possibilité d’utiliser des notifications d'UI Automation et d’autres fonctionnalités d'UI Automation.
  • L’élément UI Automation qui correspond à la propriété en cours de modification est maintenant un enfant de l’élément UI Automation de l’élément de propriété correspondant.
  • L’élément de l’élément de propriété UI Automation est maintenant un enfant de l’élément de catégorie correspondant si le contrôle PropertyGrid parent est défini sur la vue des catégories.

Prise en charge améliorée de ToolStrip

  • Activation du support d’UI Automation pour le contrôle ToolStrip, avec la possibilité d’utiliser des notifications d'UI Automation et d’autres fonctionnalités d'UI Automation.
  • Amélioration de la navigation des éléments ToolStrip.
  • En mode Éléments, le focus du Narrateur ne disparaît pas et ne passe pas aux éléments masqués.

Amélioration des signaux visuels

  • Un contrôle CheckedListBox vide affiche maintenant un indicateur de focus quand il reçoit le focus. Remarque : la prise en charge de l’automatisation de l’interface utilisateur est activée pour les contrôles au moment de l’exécution, mais n’est pas utilisée dans le temps de conception. Pour une vue d’ensemble d’UI Automation, consultez la Vue d’ensemble d’UI Automation.

Appel des info-bulles des contrôles au clavier

  • Maintenant, vous pouvez utiliser le clavier pour appeler les info-bulles des contrôles en mettant le focus sur le contrôle souhaité. Cette fonctionnalité doit être activée explicitement pour l’application (voir la section « Comment accepter ou refuser ces modifications »)
Nom Valeur
Portée Majeur
Version 4.8
Catégorie Reciblage

Windows Presentation Foundation (WPF)

Améliorations de l’accessibilité dans WPF

Détails

Améliorations apportées au mode Contraste élevé

  • Le focus pour le contrôle Expander est désormais visible. Dans les versions précédentes de .NET Framework, ce n’était pas le cas.
  • Le texte dans CheckBox et les contrôles RadioButton lorsqu’ils sont sélectionnés sont désormais plus faciles à voir que dans les versions précédentes du .NET Framework.
  • La bordure d’un ComboBox désactivé est désormais la même couleur que le texte désactivé. Dans les versions précédentes de .NET Framework, ce n’était pas le cas.
  • Les boutons désactivés et ciblés utilisent désormais la couleur de thème appropriée. Dans les versions précédentes de .NET Framework, elles ne l’ont pas fait.
  • Le bouton déroulant est désormais visible quand le style d’un contrôle ComboBox est défini sur ToolBar.ComboBoxStyleKey. Dans les versions précédentes de .NET Framework, ce n’était pas le cas.
  • La flèche d’indicateur de tri dans un contrôle DataGrid utilise désormais des couleurs de thème. Dans les versions précédentes de .NET Framework, elle n’a pas été prise en compte.
  • Le style de lien hypertexte par défaut change maintenant pour adopter la couleur de thème correcte au passage de la souris. Dans les versions précédentes de .NET Framework, elle n’a pas été prise en compte.
  • Le focus clavier sur les boutons radio est désormais visible. Dans les versions précédentes de .NET Framework, ce n’était pas le cas.
  • La colonne de cases à cocher du contrôle DataGrid utilise désormais les couleurs attendues pour le focus clavier. Dans les versions précédentes de .NET Framework, elle n’a pas été prise en compte.
  • Les indicateurs de mise au point clavier sont désormais visibles sur les commandes ComboBox et ListBox. Dans les versions précédentes de .NET Framework, ce n’était pas le cas.

Améliorations de l'interaction du lecteur d'écran

  • Les contrôles Expander sont maintenant correctement annoncés comme groupes (développer/réduire) par les lecteurs d’écran.
  • Les contrôles DataGridCell sont maintenant correctement annoncés comme cellules de grille de données (version localisée) par les lecteurs d’écran.
  • Les lecteurs d’écran annoncent désormais le nom d’un ComboBox modifiable.
  • Les contrôles PasswordBox ne sont plus annoncés comme aucun élément dans la vue par les lecteurs d’écran.

Prise en charge des régions dynamiques

Les lecteurs d’écran, tels que le Narrateur, aident les utilisateurs à comprendre l’interface utilisateur d’une application, généralement en décrivant l’élément d’interface utilisateur qui a actuellement le focus. Toutefois, si un élément d’interface utilisateur change quelque part dans l’écran et qu’il n’a pas le focus, l’utilisateur peut ne pas être informé et manquer des informations importantes. LiveRegions sont destinés à résoudre ce problème. Un développeur peut les utiliser pour informer le lecteur d’écran ou tout autre client ui Automation qu’une modification importante a été apportée à un élément d’interface utilisateur. Le lecteur d’écran peut ensuite décider comment et quand informer l’utilisateur de cette modification. La propriété LiveSetting permet également au lecteur d’écran de savoir combien il est important d’informer l’utilisateur de la modification apportée à l’interface utilisateur.

Suggestion

Comment accepter ou refuser ces modifications

Pour que l’application bénéficie de ces modifications, elle doit s’exécuter sur .NET Framework 4.7.1 ou version ultérieure. L’application peut tirer parti de ces modifications de l’une des manières suivantes :

  • Ciblez .NET Framework 4.7.1. Il s’agit de l’approche recommandée. Ces modifications d’accessibilité sont activées par défaut sur les applications WPF qui ciblent .NET Framework 4.7.1 ou version ultérieure.

  • Il désactive les comportements d’accessibilité hérités en ajoutant le AppContext Switch suivant dans la section du fichier de configuration de l’application et en le définissant sur , comme l’illustre l’exemple suivant.

    <?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>
    

Les applications qui ciblent .NET Framework 4.7.1 ou version ultérieure et qui souhaitent conserver le comportement d’accessibilité hérité peuvent choisir d’utiliser les fonctionnalités d’accessibilité héritées en définissant explicitement ce commutateur AppContext sur true. Pour obtenir une vue d’ensemble de l’automatisation de l’interface utilisateur, consultez Vue d’ensemble d’UI Automation.

Nom Valeur
Portée Majeur
Version 4.7.1
Catégorie Reciblage

API affectées

Ajout de la propriété publique SelectionTextBrush à la sélection sans ornement pour TextBox/PasswordBox

Détails

Dans les applications WPF utilisant sélection de texte non ornementaire pour TextBox et PasswordBox, les développeurs peuvent maintenant définir la propriété SelectionTextBrush nouvellement ajoutée afin de modifier le rendu du texte sélectionné. Par défaut, cette couleur change avec HighlightTextBrushKey. Si la sélection de texte sans ornement n'est pas activée, cette propriété n'a aucun effet.

Suggestion

Une fois la sélection de texte non ornementnée activée, vous pouvez utiliser la propriété PasswordBox.SelectionTextBrush et SelectionTextBrush pour modifier l’apparence du texte sélectionné. Pour ce faire, utilisez XAML :

<TextBox SelectionBrush="Red" SelectionTextBrush="White"  SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
Nom Valeur
Portée Majeur
Version 4.8
Catégorie Reciblage

API affectées

HwndHost redimensionne correctement le HWND enfant lors de changements DPI

Détails

Dans .NET Framework 4.7.2 et les versions antérieures, lorsque WPF était exécuté en mode Per-Monitor Aware, les contrôles hébergés dans HwndHost n'étaient pas correctement dimensionnés après un changement de DPI, par exemple lors du déplacement d'applications d'un moniteur à un autre. Ce correctif garantit que les contrôles hébergés sont dimensionnés de manière appropriée.

Suggestion

Pour que l’application bénéficie de ces modifications, elle doit s’exécuter sur .NET Framework 4.7.2 ou version ultérieure, et elle doit opter pour ce comportement en définissant la AppContext Switch suivante dans la section <runtime> du fichier de configuration d’application sur false, comme l’illustre l’exemple suivant.

<?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 &#39;key1=true/false;key2=true/false  -->
<AppContextSwitchOverrides value="Switch.System.Windows.DoNotUsePresentationDpiCapabilityTier2OrGreater=false" />
</runtime>
</configuration>
Nom Valeur
Portée Majeur
Version 4.8
Catégorie Reciblage

Windows Workflow Foundation (WF)

Améliorations de l’accessibilité dans le concepteur de flux de travail Windows Workflow Foundation (WF)

Détails

Le concepteur de flux de travail Windows Workflow Foundation (WF) améliore son fonctionnement avec les technologies d’accessibilité. Ces améliorations incluent les modifications suivantes :

  • L’ordre de tabulation est modifié pour passer de gauche à droite et de haut en bas dans certains contrôles :
  • La fenêtre d’initialisation de la corrélation pour définir les données de corrélation pour l’activité InitializeCorrelation
  • Fenêtre de définition de contenu pour les activités Receive, Send, SendReplyet ReceiveReply
  • D’autres fonctions sont disponibles via le clavier :
  • Lors de la modification des propriétés d’une activité, les groupes de propriétés peuvent être réduits par clavier la première fois qu’ils sont concentrés.
  • Les icônes d’avertissement sont désormais accessibles par clavier.
  • Le bouton Autres propriétés de la fenêtre Propriétés est désormais accessible par clavier.
  • Les utilisateurs du clavier peuvent désormais accéder aux éléments d’en-tête dans les volets Arguments et Variables du Concepteur de flux de travail.
  • Visibilité améliorée des éléments avec focus, par exemple quand :
  • Ajout de lignes à des grilles de données utilisées par le Concepteur de flux de travail et les concepteurs d’activités.
  • Déplacement par tabulation dans les champs des activités ReceiveReply et SendReply.
  • Définition des valeurs par défaut pour les variables ou arguments
  • Les lecteurs d’écran peuvent désormais reconnaître correctement :
  • Points d’arrêt définis dans le concepteur de flux de travail.
  • Activités FlowSwitch<T>, FlowDecisionet CorrelationScope.
  • Contenu de l’activité Receive.
  • Le type cible pour l’activité InvokeMethod.
  • La zone de liste déroulante Exception et la section Finally de l’activité TryCatch.
  • La zone de liste déroulante Type de message, le séparateur dans la fenêtre Ajouter des initialiseurs de corrélation, la fenêtre de définition du contenu et la fenêtre Définition de CorrelatesOn dans les activités de messagerie (Receive, Send, SendReply et ReceiveReply).
  • Transitions d’ordinateur d’état et destination des transitions.
  • Annotations et connecteurs sur les activités FlowDecision.
  • Menus contextuels (clic droit) pour les activités.
  • Les éditeurs de valeurs de propriété, le bouton Effacer la recherche, les boutons Par catégorie et le tri alphabétique, ainsi que la boîte de dialogue Éditeur d’expressions dans la grille des propriétés.
  • Pourcentage de zoom dans le Concepteur de flux de travail.
  • Le séparateur dans les activités Parallel et Pick.
  • L’activité InvokeDelegate.
  • Fenêtre Sélectionner des types pour les activités de dictionnaire (Microsoft.Activities.AddToDictionary<TKey,TValue>, Microsoft.Activities.RemoveFromDictionary<TKey,TValue>, etc.).
  • La fenêtre Rechercher et sélectionner un type .NET.
  • Les barres de navigation dans le Concepteur de flux de travail.
  • Les utilisateurs qui choisissent des thèmes à contraste élevé verront de nombreuses améliorations dans la visibilité du Concepteur de flux de travail et ses contrôles, tels que de meilleurs rapports de contraste entre les éléments et des zones de sélection plus visibles utilisées pour les éléments de focus.

Suggestion

Si vous disposez d’une application avec un concepteur de workflow réhébergé, votre application peut tirer parti de ces modifications en effectuant l’une ou l’autre de ces actions :

  • Recompilez votre application pour cibler .NET Framework 4.7.1. Ces modifications d’accessibilité sont activées par défaut.
  • Si votre application cible le .NET Framework 4.7 ou une version antérieure, mais qu’elle s’exécute sur .NET Framework 4.7.1, vous pouvez refuser ces comportements d’accessibilité hérités en ajoutant le commutateur AppContext suivant à la section <runtime> du fichier app.config et définir ce paramètre sur false, comme l’illustre l’exemple suivant.
<?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>

Les applications qui ciblent .NET Framework 4.7.1 ou version ultérieure et qui souhaitent conserver le comportement d’accessibilité hérité peuvent choisir d’utiliser les fonctionnalités d’accessibilité héritées en définissant explicitement ce commutateur AppContext sur true.

Nom Valeur
Portée Mineur
Version 4.7.1
Catégorie Reciblage

Les sommes de contrôle XAML de workflow pour les symboles passent de SHA1 à SHA256

Détails

Pour prendre en charge le débogage avec Visual Studio, l’exécution du workflow génère une somme de contrôle pour un fichier XAML de workflow à l’aide d’un algorithme de hachage. Dans le .NET Framework 4.6.2 et les versions antérieures, le hachage des sommes de contrôle des flux de travail utilisait l'algorithme MD5, ce qui a provoqué des problèmes sur les systèmes compatibles FIPS. À compter du .NET Framework 4.7, l’algorithme par défaut a été remplacé par SHA1. À compter du .NET Framework 4.8, l’algorithme par défaut a été remplacé par SHA256.

Suggestion

Si votre code ne peut pas charger des instances de workflow ou ne trouve pas les symboles appropriés en raison d’un échec de la somme de contrôle, essayez en définissant le commutateur AppContext « Switch.System.Activities.UseSHA1HashForDebuggerSymbols » sur true. Dans le code :

System.AppContext.SetSwitch("Switch.System.Activities.UseSHA1HashForDebuggerSymbols", true);

Ou dans la configuration :

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
  </runtime>
</configuration>
Nom Valeur
Portée Mineur
Version 4.8
Catégorie Reciblage

Définition XOML de workflow et clés de cache SqlTrackingService modifiées de MD5 à SHA256

Détails

Le runtime de flux de travail conserve un cache des définitions de flux de travail définies dans XOML. SqlTrackingService conserve également un cache qui est indexé par des chaînes. Ces caches sont indexés par les valeurs qui incluent la valeur de hachage de la somme de contrôle. Dans .NET Framework 4.7.2 et versions antérieures, ce hachage de somme de contrôle a utilisé l’algorithme MD5, ce qui a provoqué des problèmes sur les systèmes compatibles FIPS. À compter du .NET Framework 4.8, l’algorithme utilisé est SHA256. Il ne doit pas y avoir de problème de compatibilité avec cette modification, car les valeurs sont recalculées chaque fois que le runtime de flux de travail et SqlTrackingService est démarré. Toutefois, nous avons fourni des particularités pour permettre aux clients de revenir à l’utilisation de l’algorithme de hachage ancien, si nécessaire.

Suggestion

Si cette modification présente un problème lors de l’exécution de flux de travail, essayez de définir un ou les deux commutateurs AppContext :

  • « Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey » sur true.
  • « Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey » sur true. Dans le code :
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey", true);
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey", true);

Ou dans le fichier de configuration (il doit s’agir du fichier config de l’application qui crée l’objet WorkflowRuntime) :

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey=true" />
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKeytrue" />
</runtime>
</configuration>
Nom Valeur
Portée Mineur
Version 4.8
Catégorie Reciblage

Sommes de contrôle du fichier XOML de workflow passées de MD5 à SHA256

Détails

Pour prendre en charge le débogage de flux de travail basés sur XOML avec Visual Studio, lorsque les projets de flux de travail contenant des fichiers XOML sont compilés, une somme de contrôle du contenu du fichier XOML est incluse dans le code généré sous forme de valeur WorkflowMarkupSourceAttribute.MD5Digest. Dans .NET Framework 4.7.2 et versions antérieures, ce hachage de somme de contrôle a utilisé l’algorithme MD5, ce qui a provoqué des problèmes sur les systèmes compatibles FIPS. À compter du .NET Framework 4.8, l’algorithme utilisé est SHA256. Pour être compatible avec workflowMarkupSourceAttribute.MD5Digest, seuls les 16 premiers octets de la somme de contrôle générée sont utilisés. Cela peut entraîner des problèmes pendant le débogage. Vous devrez peut-être recréer votre projet.

Suggestion

Si la regénération de votre projet ne résout pas le problème, essayez en définissant le commutateur AppContext « Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum » sur true. Dans le code, cela donne :

System.AppContext.SetSwitch("Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum", true);

Ou dans un fichier de configuration (il doit s’agir de MSBuild.exe.config pour le MSBuild.exe que vous utilisez) :

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
Nom Valeur
Portée Mineur
Version 4.8
Catégorie Reciblage

.NET Framework 4.8.1

Aucun problème de compatibilité des applications n’a été introduit dans .NET Framework 4.8.1.