Aanpassingen voor retargeting met betrekking tot migratie naar .NET Framework 4.8.x
Dit artikel bevat de compatibiliteitsproblemen met apps die zijn geïntroduceerd in .NET Framework 4.8 en 4.8.1.
.NET Framework 4.8
Kern
Beheerde cryptografieklassen werpen geen CryptographyException in de FIPS-modus
Bijzonderheden
In .NET Framework 4.7.2 en eerdere versies gooien klassen van beheerde cryptografische providers, zoals SHA256Managed, een CryptographicException wanneer de systeembibliotheken voor cryptografie 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 latere versies, schakelen automatisch over naar het nieuwere, ontspannen beleid, zodat een CryptographicException 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 het uitschakelen en het vorige gedrag herstellen, zodat er een CryptographicException wordt geworpen in FIPS-modus, door de volgende AppContextSwitchOverrides-configuratie-instelling toe te voegen aan de <runtime->-sectie 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 voor deze wijziging aanmelden door de volgende AppContextSwitchOverrides configuratie-instelling toe te voegen aan de sectie <runtime> van uw toepassingsconfiguratiebestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.8 |
Soort | Hergericht adverteren |
Betrokken API's
- 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
Windows Forms
Toegankelijkheidsverbeteringen in Besturingselementen voor Windows Forms voor .NET 4.8
Bijzonderheden
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 Toegankelijke hiërarchie (verbetering van de navigatie via de UI Automatiseringsboom).
Suggestie
Hoe u zich kunt afmelden voor deze wijzigingen Om ervoor te zorgen dat de toepassing van deze wijzigingen kan profiteren, 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 de .NET Framework 4.7.2 of een eerdere versie en schakelt de verouderde toegankelijkheidsgedragingen uit door de volgende AppContext-switch toe te voegen aan de
<runtime>
-sectie van het app-configuratiebestand en deze in te stellen opfalse
, zoals het volgende voorbeeld toont.
<?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 stellen op true
. Voor het inschakelen van de ondersteuning voor het aanroepen van toetsenbordknopinfo 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 ingeschakeld, maar de weergavefunctie voor knopinfo wel is ingeschakeld, zal bij de eerste keer toegang een runtime-NotSupportedException fout optreden met betrekking 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 verteller-ondersteuning
- Verteller kondigt nu de sorteerrichting van DataGridViewColumn aan bij het aankondigen van een toegankelijke naam van DataGridViewCell.
verbeterde ondersteuning voor toegankelijkheid van CheckedListBox
- Verbeterde Verteller-ondersteuning voor het besturingselement CheckedListBox. Wanneer u met het toetsenbord naar het besturingselement CheckedListBox navigeert, richt Verteller zich op het CheckedListBox item en kondigt dit aan.
- Een leeg besturingselement CheckedListBox heeft nu een focusrechthoek die is getekend voor een voorgegeven eerste item wanneer het besturingselement de focus krijgt.
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
Ondersteuning voor UI Automation ingeschakeld voor DataGridView beheer met de mogelijkheid om UI Automation-meldingen en andere UI Automation-functies te gebruiken.
Het UI Automation-element dat overeenkomt met de DataGridViewComboBoxEditingControl of DataGridViewTextBoxEditingControl is nu een kind van de corresponderende bewerkingscel.
verbeterde ondersteuning voor toegankelijkheid van LinkLabel
- Verbeterde toegankelijkheid van LinkLabel-besturingselement: Verteller kondigt de uitgeschakelde status van de link aan als het bijbehorende LinkLabel-besturingselement is uitgeschakeld.
Verbeterde ondersteuning voor toegankelijkheid op de voortgangsbalk
- 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 UI-automatiseringsevenementenoverzichtvoor een overzicht van UI-automatiseringsevenementen, met inbegrip van meldingsevenementen van UI-automatisering.
verbeterde ondersteuning voor PropertyGrid-toegankelijkheid
- Ondersteuning voor UI Automation ingeschakeld voor het PropertyGrid-besturingselement, met de mogelijkheid om UI Automation-meldingen en andere UI Automation-functies te gebruiken.
- Het UI Automation-element dat overeenkomt met de momenteel bewerkte eigenschap is nu een onderdeel van het bijbehorende eigenschap-item in UI Automation.
- Het UI Automatisering-eigenschapsitem is nu een subelement van het bijbehorende categorie-element als het bovenliggende PropertyGrid-controle is ingesteld op categorieweergave.
Verbeterde Toolstrip-ondersteuning
- 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 niet naar verborgen items.
verbeterde visuele aanwijzingen
- Een leeg CheckedListBox besturingselement geeft nu een focusindicator weer wanneer deze de focus krijgt. Opmerking: ondersteuning voor UI-automatisering is ingeschakeld voor besturingselementen in runtime, maar wordt niet gebruikt in de ontwerptijd. Zie het UI-automatiseringsoverzichtvoor een overzicht van UI-automatisering.
Tooltips van bedieningsonderdelen oproepen met een toetsenbord
- Tooltips voor besturingselementen kunnen nu worden aangeroepen door het besturingselement met het toetsenbord te focussen. Deze functie moet expliciet worden ingeschakeld voor de toepassing (zie de sectie 'Aanmelden of afmelden bij deze wijzigingen')
Naam | Waarde |
---|---|
Draagwijdte | Majoor |
Versie | 4.8 |
Type | Opnieuw targeting |
Windows Presentation Foundation (WPF)
Toegankelijkheidsverbeteringen in WPF
Bijzonderheden
Verbeteringen in hoog contrast
- De focus voor de Expander controle is nu zichtbaar. In eerdere versies van .NET Framework was dat niet het geval.
- 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 is nu dezelfde kleur als de uitgeschakelde tekst. In eerdere versies van .NET Framework was dat niet mogelijk.
- 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 controle is ingesteld op ToolBar.ComboBoxStyleKey. In eerdere versies van de .NET Framework was deze functionaliteit niet aanwezig.
- De sorteeraanwijzerpijl in een DataGrid controle gebruikt nu themakleuren. In eerdere versies van .NET Framework is dit niet gelukt.
- De standaard hyperlinkstijl verandert nu naar de juiste themakleur wanneer u er met de muis over beweegt. In eerdere versies van .NET Framework is dit niet gelukt.
- De toetsenbordfocus op radioknoppen is nu zichtbaar. In eerdere versies van .NET Framework was dit niet mogelijk.
- De selectievakjeskolom van het DataGrid-besturingselement maakt nu gebruik van de verwachte kleuren voor sleutelsfocus-terugkoppeling. In eerdere versies van .NET Framework is dit niet gelukt.
- de focusvisuals van het toetsenbord zijn nu zichtbaar op ComboBox en ListBox besturingselementen. In eerdere versies van .NET Framework was dat niet het geval.
Verbeteringen in de interactie van schermlezers
- Expander bedieningselementen worden nu correct aangemerkt als groepen (uitvouwen/samenvouwen) door schermlezers.
- DataGridCell besturingselementen worden nu correct aangekondigd als gegevensrastercel (gelokaliseerd) door schermlezers.
- Schermlezers zullen nu de naam van een bewerkbaar element ComboBoxaankondigen.
- PasswordBox bedieningselementen worden niet meer aangekondigd als 'geen item in zicht' 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
Deze wijzigingen in- of uitschakelen
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:
Richt op .NET Framework 4.7.1. Dit is de aanbevolen aanpak. Deze toegankelijkheidswijzigingen zijn standaard ingeschakeld voor WPF-toepassingen die zijn gericht op .NET Framework 4.7.1 of hoger.
Er wordt afgezien van het verouderde toegankelijkheidsgedrag door de volgende AppContext Switch toe te voegen in de sectie
<runtime>
van het configuratiebestand van de app en deze in te stellen opfalse
, zoals te zien is in het volgende voorbeeld.<?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 zich richten 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 stellen op true
.
Zie Overzicht van UI Automationvoor een overzicht van UI-automatisering.
Naam | Waarde |
---|---|
Draagwijdte | Majoor |
Versie | 4.7.1 |
Type | Opnieuw targeting |
Getroffen API's
- AutomationElementIdentifiers.LiveSettingProperty
- AutomationElementIdentifiers.LiveRegionChangedEvent
- System.Windows.Automation.AutomationLiveSetting
- AutomationProperties.LiveSettingProperty
- AutomationProperties.SetLiveSetting(DependencyObject, AutomationLiveSetting)
- AutomationProperties.GetLiveSetting(DependencyObject)
- AutomationPeer.GetLiveSettingCore()
Openbare eigenschap SelectionTextBrush toevoegen aan TextBox/PasswordBox niet-adornerende selectie
Bijzonderheden
In WPF-toepassingen die gebruikmaken van niet-adorner-gebaseerde tekstselectie voor TextBox en PasswordBox, kunnen ontwikkelaars nu de nieuw toegevoegde SelectionTextBrush-eigenschap instellen om de weergave van de geselecteerde tekst te wijzigen. Deze kleur verandert standaard met HighlightTextBrushKey. Als tekstselectie niet op adorners is gebaseerd en niet is ingeschakeld, doet deze eigenschap niets.
Suggestie
Zodra tekstselectie zonder opmaak is ingeschakeld, kunt u de eigenschap PasswordBox.SelectionTextBrush en SelectionTextBrush 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 | Waarde |
---|---|
Draagwijdte | Majoor |
Versie | 4.8 |
Type | Opnieuw targeting |
Getroffen API's
- TextBoxBase.SelectionTextBrushProperty
- TextBoxBase.SelectionTextBrush
- System.Windows.Controls.TextBox
- System.Windows.Controls.PasswordBox
HwndHost wijzigt nu de grootte van child-HWND correct tijdens de DPI-wijzigingen.
Bijzonderheden
In .NET Framework 4.7.2 en eerdere versies, wanneer WPF in de Per-Monitor Aware-modus werd uitgevoerd, werden de afmetingen van besturingselementen die binnen HwndHost worden gehost, niet correct aangepast na DPI-wijzigingen, zoals bij het verplaatsen van toepassingen van het ene beeldscherm naar het andere. Deze oplossing zorgt ervoor dat gehoste besturingselementen de juiste grootte hebben.
Suggestie
Om ervoor te zorgen dat de toepassing kan 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 de sectie <runtime>
van het app-configuratiebestand in te stellen op false
, 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.System.Windows.DoNotUsePresentationDpiCapabilityTier2OrGreater=false" />
</runtime>
</configuration>
Naam | Waarde |
---|---|
Draagwijdte | Majoor |
Versie | 4.8 |
Type | Opnieuw targeting |
Windows Workflow Foundation (WF)
Toegankelijkheidsverbeteringen in De werkstroomontwerper van Windows Workflow Foundation (WF)
Bijzonderheden
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:
- Initialiseer het correlatievenster om de correlatiegegevens voor de InitializeCorrelation-activiteit in te stellen.
- Het inhoudsdefinitievenster voor de activiteiten Receive, Send, SendReplyen ReceiveReply
- Er zijn meer functies beschikbaar via het toetsenbord:
- Wanneer u de eigenschappen van een activiteit bewerkt, kunnen eigenschapsgroepen met het toetsenbord worden samengevouwen wanneer ze voor het eerst de focus hebben.
- Waarschuwingspictogrammen zijn nu toegankelijk via het toetsenbord.
- De knop Meer eigenschappen in het 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.
- Door velden te navigeren met de tabtoets in de activiteiten ReceiveReply en SendReply.
- Standaardwaarden instellen voor variabelen of argumenten
- Schermlezers kunnen nu het volgende op de juiste manier herkennen:
- Onderbrekingspunten die zijn ingesteld in de werkstroomontwerper.
- De activiteiten FlowSwitch<T>, FlowDecisionen CorrelationScope.
- 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 Berichttype, de splitsfunctie in het venster Correlatie-initialisatie toevoegen, het venster Inhoudsdefinitie en het CorrelatesOn-definitievenster in de berichtenactiviteiten (Receive, Send, SendReplyen ReceiveReply).
- Statusmachineovergangen en bestemmingen van overgangen.
- Aantekeningen en verbinders voor FlowDecision activiteiten.
- De contextmenu's (met de rechtermuisknop) voor activiteiten.
- De editors voor eigenschapswaarden, de knop Zoeken wissen, de sorteerknoppen per Categorie en Alfabetisch, en het Expressie-editor-dialoogvenster 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 sectie
<runtime>
van het app.config-bestand en dit in te stellen opfalse
, 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 gericht zijn 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 stellen op true
.
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7.1 |
Type | Opnieuw targeting |
Controlesommen voor werkstroom XAML voor symbolen zijn gewijzigd van SHA1 in SHA256
Bijzonderheden
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 workflow checksum hashing het MD5-algoritme, wat problemen veroorzaakte op FIPS-ingeschakelde systemen. 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 kan vinden vanwege een controlesomfout, kunt u proberen de AppContext
schakelaar Switch.System.Activities.UseSHA1HashForDebuggerSymbols in te stellen op true
. In code:
System.AppContext.SetSwitch("Switch.System.Activities.UseSHA1HashForDebuggerSymbols", true);
Of in de configuratie:
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
</runtime>
</configuration>
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.8 |
Soort | Opnieuw targeting |
Workflow XOML-definitie en SqlTrackingService-cachesleutels zijn gewijzigd van MD5 in SHA256
Bijzonderheden
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 zijn gekoppeld aan waarden die de controlesom-hashwaarde omvatten. In de .NET Framework 4.7.2 en eerdere versies gebruikte deze controlesomhashing het MD5-algoritme, wat problemen veroorzaakte op FIPS-ingeschakelde systemen. 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 aanpassingen geboden, zodat klanten indien nodig kunnen terugkeren naar het gebruik van het verouderde hashing-algoritme.
Suggestie
Als deze wijziging een probleem vormt bij het uitvoeren van werkstromen, kunt u een of beide AppContext
-switches instellen:
- "Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey" op true zetten.
- "Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey" op Waar zetten. 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 | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.8 |
Type | Opnieuw targeting |
Controlesommen voor werkstroom XOML-bestanden zijn gewijzigd van MD5 in SHA256
Bijzonderheden
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 is gegenereerd als een WorkflowMarkupSourceAttribute.MD5Digest waarde. In de .NET Framework 4.7.2 en eerdere versies gebruikte deze controlesom-berekening het MD5-algoritme, wat problemen veroorzaakte op FIPS-systemen. 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 op te bouwen, probeer dan de AppContext
-schakelaar "Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum" in te stellen op true. In de code:
System.AppContext.SetSwitch("Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum", true);
Of in een configuratiebestand (dit moet in MSBuild.exe.config staan voor de MSBuild.exe die u gebruikt):
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.8 |
Type | Opnieuw targeting |
.NET Framework 4.8.1
Er zijn geen app-compatibiliteitsproblemen geïntroduceerd in .NET Framework 4.8.1.