Delen via


Wijzigingen voor migratie naar .NET Framework 4.8.x wijzigen

Dit artikel bevat de compatibiliteitsproblemen met apps die zijn geïntroduceerd in .NET Framework 4.8 en 4.8.1.

.NET Framework 4.8

Basis

Beheerde cryptografieklassen gooien geen CryptographyException in de FIPS-modus

DETAILS

In .NET Framework 4.7.2 en eerdere versies worden beheerde cryptografische providerklassen, zoals SHA256Managed het gooien van een CryptographicException wanneer de cryptografische systeembibliotheken zijn geconfigureerd in de FIPS-modus. Deze uitzonderingen worden gegenereerd omdat de beheerde versies geen FIPS-certificering (Federal Information Processing Standards) 140-2 hebben ondergaan en cryptografische algoritmen blokkeren die niet als goedgekeurd werden beschouwd op basis van de FIPS-regels. Omdat weinig ontwikkelaars hun ontwikkelmachines in de FIPS-modus hebben, worden deze uitzonderingen vaak alleen op productiesystemen gegenereerd. Toepassingen die gericht zijn op .NET Framework 4.8 en nieuwere versies, schakelen automatisch over naar het nieuwere, ontspannen beleid, zodat een CryptographicException beleid niet meer standaard wordt gegenereerd in dergelijke gevallen. In plaats daarvan leiden de beheerde cryptografieklassen cryptografische bewerkingen om naar een systeemcryptografiebibliotheek. Deze beleidswijziging verwijdert effectief een mogelijk verwarrend verschil tussen ontwikkelomgevingen en de productieomgevingen en zorgt ervoor dat systeemeigen onderdelen en beheerde onderdelen onder hetzelfde cryptografische beleid werken.

Suggestie

Als dit gedrag ongewenst is, kunt u zich afmelden en het vorige gedrag herstellen, zodat er een CryptographicException wordt gegenereerd in de FIPS-modus door de volgende Configuratie-instelling AppContextSwitchOverrides toe te voegen aan de <runtimesectie> van uw toepassingsconfiguratiebestand:

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

Als uw toepassing is gericht op .NET Framework 4.7.2 of eerder, kunt u zich ook aanmelden voor deze wijziging door de volgende configuratie-instelling voor AppContextSwitchOverrides toe te voegen aan de <runtimesectie> van uw toepassingsconfiguratiebestand:

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Naam Weergegeven als
Bereik Edge
Versie 4.8
Type Opnieuw targeting

Betrokken API's

Windows Forms

Toegankelijkheidsverbeteringen in Besturingselementen voor Windows Forms voor .NET 4.8

DETAILS

Het Windows Forms Framework blijft verbeteren hoe het werkt met toegankelijkheidstechnologieën om klanten van Windows Forms beter te ondersteunen. Dit zijn de volgende wijzigingen:

  • Wijzigingen om de weergave tijdens de modus Hoog contrast te verbeteren.
  • Wijzigingen in interactie met Verteller.
  • Wijzigingen in de hiërarchie Toegankelijk (verbetering van de navigatie via de ui-automatiseringsstructuur).

Suggestie

Hoe u zich kunt aanmelden of afmelden voor deze wijzigingen om ervoor te zorgen dat de toepassing kan profiteren van deze wijzigingen, moet deze worden uitgevoerd op .NET Framework 4.8. De toepassing kan zich op een van de volgende manieren aanmelden voor deze wijzigingen:

  • Het wordt opnieuw gecompileerd om het .NET Framework 4.8 te targeten. Deze toegankelijkheidswijzigingen zijn standaard ingeschakeld voor Windows Forms-toepassingen die gericht zijn op .NET Framework 4.8.
  • Het is gericht op .NET Framework 4.7.2 of eerdere versie en opt-out van het verouderde toegankelijkheidsgedrag door de volgende AppContext-switch toe te voegen aan de <runtime> sectie van het app-configuratiebestand en het in te falsestellen op , zoals in het volgende voorbeeld wordt weergegeven.
<?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>

Als u zich wilt aanmelden voor de toegankelijkheidsfuncties die zijn toegevoegd in .NET Framework 4.8, moet u zich ook aanmelden voor toegankelijkheidsfuncties van .NET Framework 4.7.1 en 4.7.2. Toepassingen die gericht zijn op .NET Framework 4.8 en het verouderde toegankelijkheidsgedrag willen behouden, kunnen ervoor kiezen om verouderde toegankelijkheidsfuncties te gebruiken door deze AppContext-switch expliciet in te truestellen op . Als u de ondersteuning voor het aanroepen van knopinfo voor toetsenbord inschakelt, moet u de Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false regel toevoegen aan de waarde AppContextSwitchOverrides:

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

Houd er rekening mee dat het inschakelen van deze functie vereist dat u zich aanmeldt voor de bovengenoemde toegankelijkheidsfuncties van .NET Framework 4.7.1 - 4.8. Als een van de toegankelijkheidsfuncties niet is aangemeld, maar de weergavefunctie voor knopinfo is ingeschakeld, wordt er een runtime NotSupportedException gegenereerd voor de eerste toegang tot deze functies. Het uitzonderingsbericht geeft aan dat voor toetsenbordknopinfo toegankelijkheidsverbeteringen van niveau 3 moeten worden ingeschakeld.

Het gebruik van door het besturingssysteem gedefinieerde kleuren in thema's met hoog contrast

  • Verbeterde thema's met hoog contrast.

Verbeterde ondersteuning voor Verteller

Verbeterde toegankelijkheidsondersteuning voor CheckedListBox

  • Verbeterde Verteller-ondersteuning voor het CheckedListBox besturingselement. Wanneer u met het toetsenbord naar het CheckedListBox besturingselement navigeert, richt Verteller zich op het CheckedListBox item en kondigt het aan.
  • Een leeg besturingselement CheckedListBox heeft nu een focusrechthoek die is getekend voor een virtueel eerste item wanneer het besturingselement wordt gericht.

Verbeterde ondersteuning voor toegankelijkheid van ComboBox

  • Ondersteuning voor UI Automation ingeschakeld voor het ComboBox besturingselement, met de mogelijkheid om UI Automation-meldingen en andere UI Automation-functies te gebruiken. Verbeterde ondersteuning voor DataGridView-toegankelijkheid

  • Ingeschakelde UI Automation-ondersteuning voor DataGridView beheer met de mogelijkheid om UI Automation-meldingen en andere UI Automation-functies te gebruiken.

  • Het element UI Automation dat overeenkomt met de DataGridViewComboBoxEditingControl of DataGridViewTextBoxEditingControl nu een onderliggend element is van de bijbehorende bewerkingscel.

Verbeterde ondersteuning voor toegankelijkheid van LinkLabel

  • Verbeterde LinkLabel toegankelijkheid van besturingselementen: Verteller kondigt de uitgeschakelde status voor de koppeling aan als het bijbehorende besturingselement LinkLabel is uitgeschakeld.

Verbeterde ondersteuning voor toegankelijkheid van ProgressBar

  • Ondersteuning voor UI Automation ingeschakeld voor het ProgressBar besturingselement met de mogelijkheid om UI Automation-meldingen en andere UI Automation-functies te gebruiken. Ontwikkelaars kunnen nu UI Automation-meldingen gebruiken die Verteller kan aankondigen om de voortgang aan te geven. Zie het overzicht van UI Automation-gebeurtenissen voor een overzicht van ui-automatiseringsevenementen, inclusief meldingsevenementen voor ui-automatisering.

Verbeterde toegankelijkheidsondersteuning voor PropertyGrid

  • Ondersteuning voor UI Automation ingeschakeld voor het PropertyGrid besturingselement, met de mogelijkheid om UI Automation-meldingen en andere UI Automation-functies te gebruiken.
  • Het ELEMENT UI Automation dat overeenkomt met de momenteel bewerkte eigenschap is nu een onderliggend element van het bijbehorende eigenschapsitem UI Automation.
  • Het element ui Automation-eigenschapsitem is nu een onderliggend element van het bijbehorende categorieelement als het bovenliggende PropertyGrid besturingselement is ingesteld op categorieweergave.

Verbeterde ondersteuning voor ToolStrip

  • Ondersteuning voor UI Automation ingeschakeld voor het ToolStrip besturingselement, met de mogelijkheid om UI Automation-meldingen en andere UI Automation-functies te gebruiken.
  • Verbeterde navigatie door ToolStrip items.
  • In de itemsmodus verdwijnt de focus van Verteller niet en gaat u niet naar verborgen items.

Verbeterde visuele aanwijzingen

  • Een leeg CheckedListBox besturingselement geeft nu een focusindicator weer wanneer deze de focus ontvangt. Opmerking: ondersteuning voor UI-automatisering is ingeschakeld voor besturingselementen in runtime, maar wordt niet gebruikt in de ontwerptijd. Zie het overzicht van UI Automation voor een overzicht van UI-automatisering.

Knopinfo van besturingselementen aanroepen met een toetsenbord

  • Knopinfo voor besturingselementen kan nu worden aangeroepen door het besturingselement met het toetsenbord te concentreren. Deze functie moet expliciet worden ingeschakeld voor de toepassing (zie de sectie 'Aanmelden of afmelden bij deze wijzigingen')
Naam Weergegeven als
Bereik Primair
Versie 4.8
Type Opnieuw targeting

Windows Presentation Foundation (WPF)

Toegankelijkheidsverbeteringen in WPF

DETAILS

Verbeteringen in hoog contrast

  • De focus voor het Expander besturingselement is nu zichtbaar. In eerdere versies van .NET Framework was het niet.
  • De tekst in CheckBox en RadioButton besturingselementen wanneer deze zijn geselecteerd, is nu gemakkelijker te zien dan in eerdere .NET Framework-versies.
  • De rand van een uitgeschakelde ComboBox tekst heeft nu dezelfde kleur als de uitgeschakelde tekst. In eerdere versies van .NET Framework was het niet.
  • Uitgeschakelde en gerichte knoppen gebruiken nu de juiste themakleur. In eerdere versies van .NET Framework hebben ze dat niet gedaan.
  • De vervolgkeuzeknop is nu zichtbaar wanneer de stijl van een ComboBox besturingselement is ingesteld op ToolBar.ComboBoxStyleKey. In eerdere versies van .NET Framework was het niet.
  • De indicatorpijl voor sorteren in een DataGrid besturingselement gebruikt nu themakleuren. In eerdere versies van .NET Framework is dit niet gelukt.
  • De standaard hyperlinkstijl wordt nu gewijzigd in de juiste themakleur terwijl u met de muis overgaat. In eerdere versies van .NET Framework is dit niet gelukt.
  • De focus op het toetsenbord op keuzerondjes is nu zichtbaar. In eerdere versies van .NET Framework was het niet.
  • De DataGrid kolom met selectievakjes van het besturingselement gebruikt nu de verwachte kleuren voor feedback over toetsenbordfocus. In eerdere versies van .NET Framework is dit niet gelukt.
  • de focusvisuals van het toetsenbord zijn nu zichtbaar voor ComboBox en ListBox besturingselementen. In eerdere versies van .NET Framework was het niet.

Verbeterde interactie van schermlezers

  • Expander besturingselementen worden nu correct aangekondigd als groepen (uitvouwen/samenvouwen) door schermlezers.
  • DataGridCell besturingselementen worden nu correct aangekondigd als gegevensrastercel (gelokaliseerd) door schermlezers.
  • Schermlezers kondigen nu de naam van een bewerkbaar ComboBoxaan.
  • PasswordBox besturingselementen worden niet meer aangekondigd als 'geen item in weergave' door schermlezers.

LiveRegion-ondersteuning

Schermlezers, zoals Verteller, helpen mensen de gebruikersinterface (UI) van een toepassing te begrijpen, meestal door het ui-element te beschrijven dat momenteel de focus heeft. Als een UI-element echter ergens in het scherm verandert en deze niet de focus heeft, wordt de gebruiker mogelijk niet geïnformeerd en mist deze belangrijke informatie. LiveRegions zijn bedoeld om dit probleem op te lossen. Een ontwikkelaar kan deze gebruiken om de schermlezer of een andere UI Automation-client te informeren dat er een belangrijke wijziging is aangebracht in een UI-element. De schermlezer kan vervolgens bepalen hoe en wanneer de gebruiker deze wijziging moet informeren. Met de eigenschap LiveSetting kan de schermlezer ook weten hoe belangrijk het is om de gebruiker op de hoogte te stellen van de wijziging die in de gebruikersinterface is aangebracht.

Suggestie

Aanmelden of afmelden voor deze wijzigingen

Om ervoor te zorgen dat de toepassing van deze wijzigingen kan profiteren, moet deze worden uitgevoerd op .NET Framework 4.7.1 of hoger. De toepassing kan op een van de volgende manieren profiteren van deze wijzigingen:

  • Doel .NET Framework 4.7.1. Dit is de aanbevolen methode. Deze toegankelijkheidswijzigingen zijn standaard ingeschakeld voor WPF-toepassingen die zijn gericht op .NET Framework 4.7.1 of hoger.

  • Het opt-out van het verouderde toegankelijkheidsgedrag wordt afgekeerd door de volgende AppContext Switch toe te voegen in de <runtime> sectie van het app-configuratiebestand en dit in te falsestellen op , zoals in het volgende voorbeeld wordt weergegeven.

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

Toepassingen die zijn gericht op .NET Framework 4.7.1 of hoger en het verouderde toegankelijkheidsgedrag willen behouden, kunnen ervoor kiezen om verouderde toegankelijkheidsfuncties te gebruiken door deze AppContext-switch expliciet in te truestellen op . Zie Overzicht van UI Automation voor een overzicht van UI-automatisering.

Naam Weergegeven als
Bereik Primair
Versie 4.7.1
Type Opnieuw targeting

Betrokken API's

Openbare eigenschap SelectionTextBrush toevoegen aan tekstvak/wachtwoordvak niet-sierende selectie

DETAILS

In WPF-toepassingen die gebruikmaken van niet-sierlijke tekstselectie voor TextBox en PasswordBox, kunnen ontwikkelaars nu de zojuist toegevoegde selectionTextBrush-eigenschap instellen om de weergave van de geselecteerde tekst te wijzigen. Deze kleur wordt standaard gewijzigd met HighlightTextBrushKey. Als niet-sierachtige tekstselectie niet is ingeschakeld, doet deze eigenschap niets.

Suggestie

Zodra tekstselectie op basis van niet-sieraar is ingeschakeld, kunt u de eigenschap en SelectionTextBrush de PasswordBox.SelectionTextBrush eigenschap gebruiken om het uiterlijk van de geselecteerde tekst te wijzigen. Dit kan worden bereikt met behulp van XAML:

<TextBox SelectionBrush="Red" SelectionTextBrush="White"  SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
Naam Weergegeven als
Bereik Primair
Versie 4.8
Type Opnieuw targeting

Betrokken API's

HwndHost wijzigt nu de grootte van child-HWND tijdens DPI-wijzigingen correct

DETAILS

In .NET Framework 4.7.2 en eerdere versies, toen WPF werd uitgevoerd in de modus Per Monitor Aware, werden besturingselementen die binnen HwndHost worden gehost, niet correct gewijzigd na DPI-wijzigingen, zoals bij het verplaatsen van toepassingen van de ene monitor naar het andere. Deze oplossing zorgt ervoor dat gehoste besturingselementen de juiste grootte hebben.

Suggestie

Om te kunnen profiteren van deze wijzigingen, moet deze worden uitgevoerd op .NET Framework 4.7.2 of hoger en moet deze zich aanmelden voor dit gedrag door de volgende AppContext Switch in te stellen in de <runtime> sectie van het app-configuratiebestand falseop, zoals in het volgende voorbeeld wordt weergegeven.

<?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>
Naam Weergegeven als
Bereik Primair
Versie 4.8
Type Opnieuw targeting

Windows Workflow Foundation (WF)

Toegankelijkheidsverbeteringen in De werkstroomontwerper van Windows Workflow Foundation (WF)

DETAILS

De WF-werkstroomontwerper (Windows Workflow Foundation) verbetert de werking ervan met toegankelijkheidstechnologieën. Deze verbeteringen omvatten de volgende wijzigingen:

  • De tabvolgorde wordt gewijzigd van links naar rechts en van boven naar beneden in sommige besturingselementen:
  • Het correlatievenster initialiseren voor het instellen van correlatiegegevens voor de InitializeCorrelation activiteit
  • Het inhoudsdefinitievenster voor de Receive, Senden SendReplyReceiveReply activiteiten
  • Er zijn meer functies beschikbaar via het toetsenbord:
  • Wanneer u de eigenschappen van een activiteit bewerkt, kunnen eigenschapsgroepen worden samengevouwen door het toetsenbord wanneer ze de eerste keer zijn gericht.
  • Waarschuwingspictogrammen zijn nu toegankelijk via het toetsenbord.
  • De knop Meer eigenschappen in de venster Eigenschappen is nu toegankelijk via het toetsenbord.
  • Toetsenbordgebruikers hebben nu toegang tot de koptekstitems in de deelvensters Argumenten en Variabelen van de werkstroomontwerper.
  • Verbeterde zichtbaarheid van items met focus, zoals wanneer:
  • Rijen toevoegen aan gegevensrasters die worden gebruikt door workflowontwerpers en activiteitsontwerpers.
  • Tabs door velden in de ReceiveReply en SendReply activiteiten.
  • Standaardwaarden instellen voor variabelen of argumenten
  • Schermlezers kunnen nu het volgende op de juiste manier herkennen:
  • Onderbrekingspunten die zijn ingesteld in de werkstroomontwerper.
  • De FlowSwitch<T>, FlowDecisionen CorrelationScope activiteiten.
  • De inhoud van de Receive activiteit.
  • Het doeltype voor de InvokeMethod activiteit.
  • De keuzelijst met invoervak Uitzondering en de sectie Ten slotte in de TryCatch activiteit.
  • De keuzelijst met invoervak Berichttype, de splitsfunctie in het venster Correlatie-initialisaties toevoegen, het venster Inhoudsdefinitie en het venster CorrelerenOn-defintion in de berichtenactiviteiten (Receive, Send, SendReplyen ).ReceiveReply
  • Statusmachineovergangen en overgangen naar bestemmingen.
  • Aantekeningen en connectors voor FlowDecision activiteiten.
  • De contextmenu's (met de rechtermuisknop) voor activiteiten.
  • De editors voor eigenschapswaarden, de knop Zoeken wissen, de sorteerknoppen Categorie en Alfabetisch en het dialoogvenster Expressie-editor in het eigenschappenraster.
  • Het zoompercentage in de werkstroomontwerper.
  • Het scheidingsteken in Parallel en Pick activiteiten.
  • De InvokeDelegate activiteit.
  • Het venster Typen selecteren voor woordenlijstactiviteiten (Microsoft.Activities.AddToDictionary<TKey,TValue>, Microsoft.Activities.RemoveFromDictionary<TKey,TValue>enzovoort).
  • Het venster Bladeren en .NET-type selecteren.
  • Breadcrumbs in de workflowontwerper.
  • Gebruikers die thema's met hoog contrast kiezen, zien veel verbeteringen in de zichtbaarheid van de workflowontwerper en de bijbehorende besturingselementen, zoals betere contrastverhoudingen tussen elementen en meer merkbare selectievakken die worden gebruikt voor focuselementen.

Suggestie

Als u een toepassing hebt met een opnieuw gehoste werkstroomontwerper, kan uw toepassing profiteren van deze wijzigingen door een van deze acties uit te voeren:

  • Uw toepassing opnieuw compileren om te richten op .NET Framework 4.7.1. Deze toegankelijkheidswijzigingen zijn standaard ingeschakeld.
  • Als uw toepassing is gericht op .NET Framework 4.7 of eerder, maar wordt uitgevoerd op .NET Framework 4.7.1, kunt u zich afmelden voor dit verouderde toegankelijkheidsgedrag door de volgende AppContext-switch toe te voegen aan de <runtime> sectie van het bestand app.config en dit in te falsestellen op , zoals in het volgende voorbeeld wordt weergegeven.
<?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>

Toepassingen die zijn gericht op .NET Framework 4.7.1 of hoger en het verouderde toegankelijkheidsgedrag willen behouden, kunnen ervoor kiezen om verouderde toegankelijkheidsfuncties te gebruiken door deze AppContext-switch expliciet in te truestellen op .

Naam Weergegeven als
Bereik Secundair
Versie 4.7.1
Type Opnieuw targeting

Controlesommen voor werkstroom XAML voor symbolen zijn gewijzigd van SHA1 in SHA256

DETAILS

Ter ondersteuning van foutopsporing met Visual Studio genereert de workflowruntime een controlesom voor een XAML-werkstroombestand met behulp van een hash-algoritme. In de .NET Framework 4.6.2- en eerdere versies gebruikte de werkstroomcontroleomhashing het MD5-algoritme, waardoor problemen op FIPS-systemen zijn veroorzaakt. Vanaf .NET Framework 4.7 is het standaardalgoritme gewijzigd in SHA1. Vanaf .NET Framework 4.8 is het standaardalgoritme gewijzigd in SHA256.

Suggestie

Als uw code geen werkstroomexemplaren kan laden of de juiste symbolen wilt vinden vanwege een controleomfout, kunt u de AppContext schakeloptie Switch.System.Activities.UseSHA1HashForDebuggerSymbols instellen op true. In code:

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

Of in configuratie:

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
  </runtime>
</configuration>
Naam Weergegeven als
Bereik Secundair
Versie 4.8
Type Opnieuw targeting

Workflow XOML-definitie en SqlTrackingService-cachesleutels zijn gewijzigd van MD5 in SHA256

DETAILS

De werkstroomruntime houdt een cache met werkstroomdefinities die zijn gedefinieerd in XOML. SqlTrackingService houdt ook een cache bij die is gekoppeld aan tekenreeksen. Deze caches worden gesleuteld op waarden die de hashwaarde controlesom bevatten. In de .NET Framework 4.7.2- en eerdere versies heeft deze controlesomhashing het MD5-algoritme gebruikt, waardoor problemen op FIPS-systemen zijn veroorzaakt. Vanaf .NET Framework 4.8 is het gebruikte algoritme SHA256. Er mag geen compatibiliteitsprobleem zijn met deze wijziging, omdat de waarden telkens opnieuw worden berekend wanneer de workflowruntime en SqlTrackingService worden gestart. We hebben echter quirks geboden om klanten in staat te stellen terug te keren naar het gebruik van het verouderde hashing-algoritme, indien nodig.

Suggestie

Als deze wijziging een probleem vormt bij het uitvoeren van AppContext werkstromen, kunt u een of beide schakelopties instellen:

  • "Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey" in waar.
  • "Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey" in waar. In code:
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey", true);
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey", true);

Of in het configuratiebestand (dit moet in het configuratiebestand staan voor de toepassing die het WorkflowRuntime object maakt):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey=true" />
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKeytrue" />
</runtime>
</configuration>
Naam Weergegeven als
Bereik Secundair
Versie 4.8
Type Opnieuw targeting

Controlesommen voor werkstroom XOML-bestanden zijn gewijzigd van MD5 in SHA256

DETAILS

Ter ondersteuning van foutopsporing van op XOML gebaseerde werkstromen met Visual Studio, wordt bij het bouwen van werkstroomprojecten met XOML-bestanden een controlesom van de inhoud van het XOML-bestand opgenomen in de code die als waarde WorkflowMarkupSourceAttribute.MD5Digest wordt gegenereerd. In de .NET Framework 4.7.2- en eerdere versies heeft deze controlesomhashing het MD5-algoritme gebruikt, waardoor problemen op FIPS-systemen zijn veroorzaakt. Vanaf .NET Framework 4.8 is het gebruikte algoritme SHA256. Als u compatibel wilt zijn met workflowMarkupSourceAttribute.MD5Digest, worden alleen de eerste 16 bytes van de gegenereerde controlesom gebruikt. Dit kan problemen veroorzaken tijdens foutopsporing. Mogelijk moet u uw project opnieuw bouwen.

Suggestie

Als het probleem niet wordt opgelost door uw project opnieuw te bouwen, stelt u de AppContext schakeloptie Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum in op true. In code:

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

Of in een configuratiebestand (dit moet zich in MSBuild.exe.config bevinden voor de MSBuild.exe die u gebruikt):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
Naam Weergegeven als
Bereik Secundair
Versie 4.8
Type Opnieuw targeting

.NET Framework 4.8.1

Er zijn geen app-compatibiliteitsproblemen geïntroduceerd in .NET Framework 4.8.1.