Wijzigingen in retargeting voor migratie naar .NET Framework 4.7.x
Dit artikel bevat de compatibiliteitsproblemen met apps die zijn geïntroduceerd in .NET Framework 4.7, 4.7.1en 4.7.2.
.NET Framework 4.7
ASP.NET
HttpRuntime.AppDomainAppPath genereert een NullReferenceException
Bijzonderheden
In .NET Framework 4.6.2 genereert de runtime een T:System.NullReferenceException
bij het ophalen van een P:System.Web.HttpRuntime.AppDomainAppPath
waarde die null-tekens bevat. In .NET Framework 4.6.1 en eerdere versies genereert de runtime een T:System.ArgumentNullException
.
Suggestie
U kunt een van de volgende handelingen uitvoeren om te reageren op deze wijziging:
- Verwerk de
T:System.NullReferenceException
als uw toepassing wordt uitgevoerd op .NET Framework 4.6.2. - Voer een upgrade uit naar .NET Framework 4.7, waarmee het vorige gedrag wordt hersteld en een
T:System.ArgumentNullException
wordt gegooid.
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.6.2 |
Type | Opnieuw targeting |
Getroffen API's
Gelijktijdige aanvragen per sessie beperken
Bijzonderheden
In de .NET Framework 4.6.2 en eerder, voert ASP.NET aanvragen met dezelfde Sessionid in volgorde uit, en geeft ASP.NET de Sessionid altijd standaard via cookies uit. Als het lang duurt voordat een pagina reageert, worden de serverprestaties aanzienlijk verminderd door op F5- in de browser te drukken. In de oplossing hebben we een teller toegevoegd om de in de wachtrij geplaatste aanvragen bij te houden en de aanvragen te beëindigen wanneer ze een opgegeven limiet overschrijden. De standaardwaarde is 50. Als de limiet is bereikt, wordt er een waarschuwing vastgelegd in het gebeurtenislogboek en kan een HTTP 500-antwoord worden vastgelegd in het IIS-logboek.
Suggestie
Als u het oude gedrag wilt herstellen, kunt u de volgende instelling toevoegen aan uw web.config-bestand om u af te wijzen voor het nieuwe gedrag.
<appSettings>
<add key="aspnet:RequestQueueLimitPerSession" value="2147483647"/>
</appSettings>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7 |
Type | Opnieuw targeting |
Netwerken
De standaardwaarde van ServicePointManager.SecurityProtocol is SecurityProtocolType.System.Default
Bijzonderheden
Vanaf apps die gericht zijn op .NET Framework 4.7, wordt de standaardwaarde van de eigenschap ServicePointManager.SecurityProtocolSecurityProtocolType.SystemDefault. Met deze wijziging kunnen .NET Framework-netwerk-API's op basis van SslStream (zoals FTP, HTTPS en SMTP) de standaardbeveiligingsprotocollen overnemen van het besturingssysteem in plaats van vastgelegde waarden te gebruiken die zijn gedefinieerd door .NET Framework. De standaardinstelling is afhankelijk van het besturingssysteem en elke aangepaste configuratie die door de systeembeheerder wordt uitgevoerd. Zie Protocollen in TLS/SSL (Schannel SSP)voor meer informatie over het standaard SChannel-protocol in elke versie van het Windows-besturingssysteem.
Voor toepassingen die zijn gericht op een eerdere versie van .NET Framework, is de standaardwaarde van de eigenschap ServicePointManager.SecurityProtocol afhankelijk van de versie van het doel .NET Framework. Zie de sectie Netwerken van Retargeting Changes for Migration van .NET Framework 4.5.2 naar 4.6 voor meer informatie.Suggestie
Deze wijziging is van invloed op toepassingen die gericht zijn op .NET Framework 4.7 of nieuwere versies. Als u liever een gedefinieerd protocol gebruikt in plaats van te vertrouwen op de systeemstandaard, kunt u de waarde van de eigenschap ServicePointManager.SecurityProtocol expliciet instellen. Als deze wijziging ongewenst is, kunt u zich afmelden door een configuratie-instelling toe te voegen aan de sectie <runtime> van uw toepassingsconfiguratiebestand. In het volgende voorbeeld ziet u zowel de <runtime>
-sectie als de Switch.System.Net.DontEnableSystemDefaultTlsVersions
opt-outschakelaar:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=true" />
</runtime>
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7 |
Type | Opnieuw targeting |
Getroffen API's
SslStream ondersteunt TLS-waarschuwingen
Bijzonderheden
Na een mislukte TLS-handshake wordt een System.IO.IOException met een interne System.ComponentModel.Win32Exception uitzondering gegenereerd tijdens de eerste lees/schrijf I/O-bewerking. De System.ComponentModel.Win32Exception.NativeErrorCode-code voor de System.ComponentModel.Win32Exception kan worden toegewezen aan de TLS-waarschuwing van de externe partij met behulp van de Schannel-foutcodes voor TLS- en SSL-waarschuwingen. Zie RFC 2246: Sectie 7.2.2 Foutwaarschuwingenvoor meer informatie.
Het gedrag in .NET Framework 4.6.2 en eerder is dat het transportkanaal (meestal TCP-verbinding) een time-out krijgt tijdens schrijven of lezen als de andere partij de handshake heeft mislukt en onmiddellijk daarna de verbinding heeft afgewezen.
Suggestie
Toepassingen die I/O-API's van het netwerk aanroepen, zoals Read(Byte[], Int32, Int32)/Write(Byte[], Int32, Int32), moeten IOException of System.TimeoutExceptionverwerken.
De functie TLS-waarschuwingen is standaard ingeschakeld vanaf .NET Framework 4.7. Toepassingen die zijn gericht op versies van .NET Framework van 4.0 tot en met 4.6.2 die worden uitgevoerd op een .NET Framework 4.7- of hoger-systeem, hebben de functie uitgeschakeld om de compatibiliteit te behouden.
De volgende configuratie-API is beschikbaar voor het in- of uitschakelen van de functie voor .NET Framework 4.6- en hogertoepassingen die worden uitgevoerd op .NET Framework 4.7 of hoger.
Programmatisch: Dit moet het eerste zijn dat de toepassing doet, omdat ServicePointManager slechts één keer wordt geïnitialiseerd:
AppContext.SetSwitch("TestSwitch.LocalAppContext.DisableCaching", true); // Set to 'false' to enable the feature in .NET Framework 4.6 - 4.6.2. AppContext.SetSwitch("Switch.System.Net.DontEnableTlsAlerts", true);
AppConfig:
<runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontEnableTlsAlerts=true"/> <!-- Set to 'false' to enable the feature in .NET Framework 4.6 - 4.6.2. --> </runtime>
Registersleutel (algemeen machine): Stel de waarde in op
false
om de functie in te schakelen in .NET Framework 4.6 - 4.6.2.Key: HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\AppContext\Switch.System.Net.DontEnableTlsAlerts - Type: String - Value: "true"
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7 |
Type | Opnieuw targeting |
Beïnvloede API's
- System.Net.Security.SslStream
- System.Net.WebRequest
- System.Net.HttpWebRequest
- System.Net.FtpWebRequest
- System.Net.Mail.SmtpClient
- System.Net.Http
Veiligheid
CspParameters.ParentWindowHandle verwacht nu HWND-waarde
Bijzonderheden
Met de ParentWindowHandle-waarde, geïntroduceerd in .NET Framework 2.0, kan een toepassing een bovenliggende vensterwaarde registreren, zodat elke gebruikersinterface die nodig is voor toegang tot de sleutel (zoals een prompt of toestemmingsdialoogvenster) wordt geopend als een modaal onderliggend element in het opgegeven venster. Vanaf apps die gericht zijn op .NET Framework 4.7, kan een Windows Forms-toepassing de eigenschap ParentWindowHandle instellen met code zoals hieronder:
cspParameters.ParentWindowHandle = form.Handle;
In eerdere versies van .NET Framework zou de waarde naar verwachting een System.IntPtr zijn die een locatie in het geheugen vertegenwoordigt waarin de HWND--waarde zich bevond. Stel de eigenschap in op formulier.Handle op Windows 7 en eerdere versies had geen effect, maar op Windows 8 en latere versies resulteert dit in een 'System.Security.Cryptography.CryptographicException: De parameter is onjuist'.
Suggestie
Toepassingen die gericht zijn op .NET Framework 4.7 of hoger die een bovenliggende vensterrelatie willen registreren, worden aangemoedigd om het vereenvoudigde formulier te gebruiken:
cspParameters.ParentWindowHandle = form.Handle;
Gebruikers die hadden vastgesteld dat de juiste waarde die moet worden doorgegeven, het adres was van een geheugenlocatie die de waarde form.Handle
had, kunnen zich afmelden voor de gedragswijziging door de AppContext-switch in te stellen Switch.System.Security.Cryptography.DoNotAddrOfCspParentWindowHandle
op true
:
- Door compat-switches programmatisch in te stellen op de AppContext, zoals hier uitgelegd wordt .
- Door de volgende regel toe te voegen aan de sectie
<runtime>
van het app.config-bestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.DoNotAddrOfCspParentWindowHandle=true"/>
</runtime>
Omgekeerd kunnen gebruikers die zich willen aanmelden voor het nieuwe gedrag van de .NET Framework 4.7-runtime wanneer de toepassing wordt geladen onder oudere .NET Framework-versies, de AppContext-switch instellen op false
.
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7 |
Type | Opnieuw targeting |
Betrokken API's
SslStream ondersteunt TLS-waarschuwingen
Bijzonderheden
Na een mislukte TLS-handshake wordt een System.IO.IOException met een interne System.ComponentModel.Win32Exception uitzondering gegenereerd door de eerste I/O-bewerking voor lezen/schrijven. De System.ComponentModel.Win32Exception.NativeErrorCode-code voor de System.ComponentModel.Win32Exception kan worden toegewezen aan de TLS-waarschuwing van de externe partij met behulp van de Schannel-foutcodes voor TLS- en SSL-waarschuwingen. Zie RFC 2246: Sectie 7.2.2 Foutwaarschuwingenvoor meer informatie.
Het gedrag in .NET Framework 4.6.2 en eerder is dat het transportkanaal (meestal TCP-verbinding) een time-out krijgt tijdens schrijven of lezen als de andere partij de handshake heeft mislukt en onmiddellijk daarna de verbinding heeft afgewezen.
Suggestie
Toepassingen die I/O-API's van het netwerk aanroepen, zoals Read(Byte[], Int32, Int32)/Write(Byte[], Int32, Int32), moeten IOException of System.TimeoutExceptionverwerken.
De functie TLS-waarschuwingen is standaard ingeschakeld vanaf .NET Framework 4.7. Toepassingen die zijn gericht op versies van .NET Framework van 4.0 tot en met 4.6.2 die worden uitgevoerd op een .NET Framework 4.7- of hoger-systeem, hebben de functie uitgeschakeld om de compatibiliteit te behouden.
De volgende configuratie-API is beschikbaar voor het in- of uitschakelen van de functie voor .NET Framework 4.6- en hogertoepassingen die worden uitgevoerd op .NET Framework 4.7 of hoger.
Programmatisch: Dit moet het eerste zijn dat de toepassing doet, omdat ServicePointManager slechts één keer wordt geïnitialiseerd:
AppContext.SetSwitch("TestSwitch.LocalAppContext.DisableCaching", true); // Set to 'false' to enable the feature in .NET Framework 4.6 - 4.6.2. AppContext.SetSwitch("Switch.System.Net.DontEnableTlsAlerts", true);
AppConfig:
<runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontEnableTlsAlerts=true"/> <!-- Set to 'false' to enable the feature in .NET Framework 4.6 - 4.6.2. --> </runtime>
Registersleutel (algemeen machine): Stel de waarde in op
false
om de functie in te schakelen in .NET Framework 4.6 - 4.6.2.Key: HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\AppContext\Switch.System.Net.DontEnableTlsAlerts - Type: String - Value: "true"
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7 |
Type | Opnieuw targeting |
Betrokken API's
- System.Net.Security.SslStream
- System.Net.WebRequest
- System.Net.HttpWebRequest
- System.Net.FtpWebRequest
- System.Net.Mail.SmtpClient
- System.Net.Http
Windows Communication Foundation (WCF)
Serialisatie van besturingstekens met DataContractJsonSerializer is nu compatibel met ECMAScript V6 en V8
Bijzonderheden
In .NET Framework 4.6.2 en eerdere versies heeft de System.Runtime.Serialization.Json.DataContractJsonSerializer bepaalde speciale besturingstekens, zoals \b, \f en \t, niet geserialiseerd op een manier die compatibel was met de ECMAScript V6- en V8-standaarden. Vanaf .NET Framework 4.7 is serialisatie van deze besturingstekens compatibel met ECMAScript V6 en V8.
Suggestie
Voor apps die zijn gericht op .NET Framework 4.7, is deze functie standaard ingeschakeld. Als dit gedrag niet wenselijk is, kunt u zich afmelden voor deze functie door de volgende regel toe te voegen aan de sectie <runtime>
van het app.config- of web.config-bestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Runtime.Serialization.DoNotUseECMAScriptV6EscapeControlCharacter=false" />
</runtime>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7 |
Type | Hergericht adverteren |
Getroffen API's
- DataContractJsonSerializer.WriteObject(Stream, Object)
- DataContractJsonSerializer.WriteObject(XmlDictionaryWriter, Object)
- DataContractJsonSerializer.WriteObject(XmlWriter, Object)
WCF-berichtbeveiliging kan nu TLS1.1 en TLS1.2 gebruiken
Bijzonderheden
Vanaf .NET Framework 4.7 kunnen klanten TLS1.1 of TLS1.2 configureren in WCF-berichtbeveiliging, naast SSL3.0 en TLS1.0 via configuratie-instellingen voor toepassingen.
Suggestie
In .NET Framework 4.7 is ondersteuning voor TLS1.1 en TLS1.2 in WCF-berichtbeveiliging standaard uitgeschakeld. U kunt dit inschakelen door de volgende regel toe te voegen aan de sectie <runtime>
van het app.config- of web.config-bestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols=false;Switch.System.Net.DontEnableSchUseStrongCrypto=false" />
</runtime>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7 |
Soort | Opnieuw targeting |
Windows Presentation Foundation (WPF)
Oproepen van System.Windows.Input.PenContext.Disable op systemen met aanraakfunctionaliteit kan een ArgumentException genereren.
Bijzonderheden
In sommige omstandigheden kan het aanroepen van de interne System.Windows.Input.PenContext.Disable Methode op systemen met aanraakbediening een onverwerkte T:System.ArgumentException
veroorzaken door re-entrant gedrag.
Suggestie
Dit probleem is opgelost in .NET Framework 4.7. Als u de uitzondering wilt voorkomen, voert u een upgrade uit naar een versie van .NET Framework die begint met .NET Framework 4.7.
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.6.1 |
Type | Opnieuw targeting |
NullReferenceException in uitzonderingsafhandelingscode van ImageSourceConverter.ConvertFrom
Bijzonderheden
Een fout in de uitzonderingsafhandelingscode voor ConvertFrom(ITypeDescriptorContext, CultureInfo, Object) heeft een onjuiste System.NullReferenceException veroorzaakt in plaats van de beoogde uitzondering (System.IO.DirectoryNotFoundException of System.IO.FileNotFoundException). Deze wijziging corrigeert die fout, zodat de methode nu de juiste uitzondering genereert.
Standaard zullen alle toepassingen die zijn gericht op .NET Framework 4.6.2 en eerder System.NullReferenceException blijven genereren voor compatibiliteitsdoeleinden. Ontwikkelaars die zich richten op .NET Framework 4.7 en hoger, moeten de juiste uitzonderingen zien.
Suggestie
Ontwikkelaars die willen terugkeren naar System.NullReferenceException bij het richten van .NET Framework 4.7 of hoger, kunnen het volgende toevoegen/samenvoegen aan het App.config-bestand van hun toepassing:
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Media.ImageSourceConverter.OverrideExceptionWithNullReferenceException=true"/>
</runtime>
</configuration>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7 |
Soort | Opnieuw targeting |
Beïnvloede API's
WPF-rastertoewijzing van ruimte aan sterkolommen
Bijzonderheden
Vanaf .NET Framework 4.7 vervangt WPF het algoritme dat Grid gebruikt om ruimte toe te wijzen aan *-columns. Hiermee wordt de werkelijke breedte gewijzigd die is toegewezen aan *-columns in een aantal gevallen:
- Wanneer een of meer *-kolommen ook een minimale of maximale breedte hebben die de proportionele toewijzing voor die kolom overschrijft. (De minimale breedte kan worden afgeleid van een expliciete MinWidth-declaratie of van een impliciet minimum dat is verkregen uit de inhoud van de kolom. De maximale breedte kan alleen expliciet worden gedefinieerd vanuit een MaxWidth-declaratie.)
- Wanneer een of meer *-kolommen een extreem groot *-gewicht declareren, groter dan 10^298.
- Wanneer de *-gewichten voldoende verschillen, kan dit leiden tot instabiliteit van zwevende-komma, zoals overloop, onderloop, of verlies van precisie.
- Wanneer afronding van de indeling is ingeschakeld en de effectieve dpi van de weergave voldoende hoog is. In de eerste twee gevallen kunnen de breedten die door het nieuwe algoritme worden geproduceerd aanzienlijk afwijken van de breedten die door het oude algoritme worden geproduceerd; In het laatste geval is het verschil maximaal één of twee pixels.
Met het nieuwe algoritme worden verschillende fouten opgelost die aanwezig zijn in het oude algoritme:
De totale toewijzing aan kolommen kan de breedte van het raster overschrijden. Dit kan gebeuren bij het toewijzen van ruimte aan een kolom waarvan de proportionele share kleiner is dan de minimale grootte. Het algoritme wijst de minimale grootte toe, waardoor de beschikbare ruimte voor andere kolommen wordt verkleind. Als er geen *-kolommen meer zijn om toe te wijzen, is de totale toewijzing te groot.
De totale toewijzing kan tekortschieten voor de breedte van het raster. Dit is het tweede probleem voor #1, dat ontstaat bij het toewijzen aan een kolom waarvan het proportionele aandeel groter is dan de maximale grootte, zonder dat er *-kolommen overblijven om het tekort op te vangen.
Twee *-kolommen kunnen toewijzingen ontvangen die niet evenredig zijn met hun *-gewichten. Dit is een mildere versie van #1/#2, die ontstaat bij het toewijzen aan *-columns A, B en C (in die volgorde), waarbij B's proportionele share de minimale (of maximale) beperking schendt. Zoals hierboven, verandert de ruimte die beschikbaar is voor kolom C, die minder (of meer) proportionele toewijzing krijgt dan A.
Kolommen met extreem grote gewichten (> 10^298) worden allemaal behandeld alsof ze gewicht 10^298 hadden. Proportionele verschillen tussen deze kolommen (en tussen kolommen met iets kleinere gewichten) worden niet gehonoreerd.
Kolommen met een oneindig gewicht worden niet correct verwerkt. (Eigenlijk kunt u een gewicht niet instellen op Infinity, maar dit is een kunstmatige beperking. De toewijzingscode probeerde dit te verwerken, maar deed dat slecht.)
Verschillende kleine problemen bij het voorkomen van overloop, onderloop, verlies van precisie en vergelijkbare problemen met drijvende komma.
Aanpassingen voor het afronden van de indeling zijn onjuist bij een voldoende hoge DPI-waarde. Het nieuwe algoritme produceert resultaten die voldoen aan de volgende criteria:
- De werkelijke breedte die is toegewezen aan een *-kolom is nooit kleiner dan de minimale breedte en niet groter dan de maximale breedte.
- Aan elke *-kolom waaraan de minimale of maximale breedte niet is toegewezen, wordt een breedte toegewezen die evenredig is met het *-gewicht. Om precies te zijn, als twee kolommen worden gedeclareerd met respectievelijk breedte x* en y* en als geen van beide kolommen de minimum- of maximumbreedte ontvangt, hebben de werkelijke breedten v en w die aan de kolommen zijn toegewezen, in dezelfde verhouding: v / w = x / y.
- De totale breedte die is toegewezen aan 'proportionele' *-kolommen is gelijk aan de ruimte die overblijft na toewijzing aan de beperkte kolommen (vaste, automatische en *-kolommen waaraan de minimale of maximale breedte is toegewezen). Dit kan nul zijn, bijvoorbeeld als de som van de minimale breedte groter is dan de beschikbare breedte van het raster.
- Al deze instructies moeten worden geïnterpreteerd met betrekking tot de "ideale" indeling. Wanneer de indelingsafronding van kracht is, kunnen de werkelijke breedten verschillen van de ideale breedtes met zo veel als één pixel.
Notitie
Alles wat wordt gezegd over kolommen en breedten in dit artikel is ook van toepassing op rijen en hoogten.
Suggestie
Standaard zien apps die gericht zijn op versies van .NET Framework die beginnen met .NET Framework 4.7 het nieuwe algoritme, terwijl apps die gericht zijn op .NET Framework 4.6.2 of eerdere versies, het oude algoritme zien.
Als u de standaardinstelling wilt overschrijven, gebruikt u de volgende configuratie-instelling:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Controls.Grid.StarDefinitionsCanExceedAvailableSpace=true" />
</runtime>
De waarde true
het oude algoritme selecteert, false
het nieuwe algoritme selecteert.
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7 |
Type | Opnieuw targeting |
WPF Pointer-Based Touch Stack
Bijzonderheden
Deze wijziging voegt de mogelijkheid toe om een optionele WM_POINTER op basis van WPF touch/stylus stack in te schakelen. Ontwikkelaars die dit niet expliciet inschakelen, zien geen wijzigingen in het gedrag van WPF touch/stylus. Huidige bekende problemen met optionele WM_POINTER touch/stylus stack:
- Geen ondersteuning voor realtime digitale inkting.
- Terwijl inkt en StylusPlugins nog steeds werken, worden ze verwerkt in de UI-thread, wat kan leiden tot slechte prestaties.
- Gedragswijzigingen als gevolg van wijzigingen in promotie van aanraak-/stylus-gebeurtenissen tot muis-gebeurtenissen
- Manipulatie kan zich anders gedragen
- Slepen/neerzetten toont niet de juiste feedback voor aanraakinvoer
- Dit heeft geen invloed op stylusinvoer
- Slepen en neerzetten kan niet meer gestart worden bij aanraak- of stylus-gebeurtenissen.
- Dit kan ertoe leiden dat de toepassing niet meer reageert totdat de muisinvoer is gedetecteerd.
- In plaats daarvan moeten ontwikkelaars slepen en neerzetten vanuit muis-gebeurtenissen initiëren.
Suggestie
Ontwikkelaars die deze stack willen inschakelen, kunnen het volgende toevoegen/samenvoegen aan het App.config-bestand van hun toepassing:
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Input.Stylus.EnablePointerSupport=true"/>
</runtime>
</configuration>
Als u deze optie verwijdert of de waarde instelt op false, wordt deze optionele stack uitgeschakeld. Houd er rekening mee dat deze stack alleen beschikbaar is in Windows 10 Creators Update en hoger.
Naam | Waarde |
---|---|
Draagwijdte | Edge |
Versie | 4.7 |
Soort | Opnieuw targeting |
Windows Workflow Foundation (WF)
Werkstroomcontrolesommen zijn gewijzigd van MD5 in SHA1
Bijzonderheden
Ter ondersteuning van foutopsporing met Visual Studio genereert de workflowruntime een controlesom voor een werkstroomexemplaren met behulp van een hash-algoritme. In de .NET Framework 4.6.2 en eerdere-versies, gebruikte de workflow-checksum-hashing het MD5-algoritme, wat problemen veroorzaakte op systemen met FIPS ingeschakeld. Vanaf .NET Framework 4.7 is het algoritme SHA1. Als uw code deze controlesommen heeft behouden, zijn ze niet compatibel.
Suggestie
Als uw code geen werkstroomexemplaren kan laden vanwege een controlesomfout, stel dan de AppContext
switch "Switch.System.Activities.UseMD5ForWFDebugger" in op true. In de code:
System.AppContext.SetSwitch("Switch.System.Activities.UseMD5ForWFDebugger", true);
Of in de configuratie:
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Activities.UseMD5ForWFDebugger=true" />
</runtime>
</configuration>
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7 |
Type | Opnieuw targeting |
.NET Framework 4.7.1
ASP.NET
ASP.NET Toegankelijkheidsverbeteringen in .NET Framework 4.7.1
Bijzonderheden
Vanaf .NET Framework 4.7.1 is ASP.NET verbeterd hoe ASP.NET webbesturingselementen werken met toegankelijkheidstechnologie in Visual Studio om ASP.NET klanten beter te ondersteunen. Dit zijn de volgende wijzigingen:
- Wijzigingen in de implementatie van ontbrekende UI-toegankelijkheidspatronen binnen besturingselementen, zoals het dialoogvenster 'Veld toevoegen' in de wizard 'Detailsweergave' of het dialoogvenster 'ListView configureren' van de wizard 'ListView'.
- Wijzigingen om de weergave te verbeteren in de modus 'Hoog Contrast', zoals de editor voor gegevenspaginavelden.
- Wijzigingen om de toetsenbordnavigatie-ervaring voor besturingselementen te verbeteren, zoals het Velden-dialoogvenster in de wizard Velden bewerken van het DataPager-besturingselement, het dialoogvenster ObjectContext configureren of het dialoogvenster Gegevensselectie configureren van de wizard Gegevensbron configureren.
Suggestie
Hoe u zich kunt aanmelden of afmelden voor deze wijzigingen Om Visual Studio Designer te kunnen profiteren van deze wijzigingen, moet deze worden uitgevoerd op .NET Framework 4.7.1 of hoger. De webtoepassing kan op een van de volgende manieren profiteren van deze wijzigingen:
- Installeer Visual Studio 2017 15.3 of hoger, die standaard de nieuwe toegankelijkheidsfuncties ondersteunt met de volgende AppContext Switch.
- Meld u af voor het verouderde toegankelijkheidsgedrag door de
Switch.UseLegacyAccessibilityFeatures
AppContext-switch toe te voegen aan de sectie<runtime>
in het devenv.exe.config-bestand en dit in te stellen opfalse
, zoals in het volgende voorbeeld wordt weergegeven.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<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 |
Kern
Uitzonderingen voor SerialPort-achtergrondthread-excepties
Bijzonderheden
Achtergrondthreads die zijn gemaakt met SerialPort streams beëindigen het proces niet meer wanneer uitzonderingen voor het besturingssysteem worden gegenereerd.
In toepassingen die gericht zijn op .NET Framework 4.7 en eerdere versies, wordt een proces beëindigd wanneer er een uitzondering op het besturingssysteem wordt gegenereerd op een achtergrondthread die is gemaakt met een SerialPort stream.
In toepassingen die zijn gericht op .NET Framework 4.7.1 of een latere versie, wachten achtergrondthreads op gebeurtenissen van het besturingssysteem met betrekking tot de actieve seriële poort en kunnen in sommige gevallen vastlopen, zoals plotselinge verwijdering van de seriële poort.
Suggestie
Voor apps die gericht zijn op .NET Framework 4.7.1, kunt u zich afmelden voor de afhandeling van uitzonderingen als dit niet wenselijk is door het volgende toe te voegen aan de sectie <runtime>
van uw app.config
-bestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.Ports.DoNotCatchSerialStreamThreadExceptions=true" />
</runtime>
Voor apps die gericht zijn op eerdere versies van .NET Framework, maar worden uitgevoerd op .NET Framework 4.7.1 of hoger, kunt u zich aanmelden voor de afhandeling van uitzonderingen door het volgende toe te voegen aan de sectie <runtime>
van uw app.config
-bestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.Ports.DoNotCatchSerialStreamThreadExceptions=false" />
</runtime>
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7.1 |
Type | Opnieuw targeting |
Getroffen API's
ServiceBase geeft geen OnStart-uitzonderingen door
Bijzonderheden
In .NET Framework 4.7 en eerdere versies worden uitzonderingen die zijn opgetreden bij het opstarten van de service niet doorgegeven aan de aanroeper van ServiceBase.Run.
Vanaf toepassingen die zijn gericht op .NET Framework 4.7.1, worden uitzonderingen door de runtime doorgegeven aan ServiceBase.Run voor services die niet kunnen worden gestart.
Suggestie
Bij het starten van de service, als er een uitzondering is, wordt die uitzondering doorgegeven. Dit moet helpen bij het vaststellen van gevallen waarin services niet kunnen worden gestart.
Als dit gedrag ongewenst is, kunt u zich afmelden door het volgende AppContextSwitchOverrides
element toe te voegen aan de sectie runtime
van uw toepassingsconfiguratiebestand:
<AppContextSwitchOverrides value="Switch.System.ServiceProcess.DontThrowExceptionsOnStart=true" />
Als uw toepassing is gericht op een eerdere versie dan 4.7.1, maar u dit gedrag wilt hebben, voegt u het volgende AppContextSwitchOverrides
element toe aan de sectie runtime
van uw toepassingsconfiguratiebestand:
<AppContextSwitchOverrides value="Switch.System.ServiceProcess.DontThrowExceptionsOnStart=false" />
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7.1 |
Type | Opnieuw targeting |
Getroffen API's
Veiligheid
Standaardalgoritmen SignedXML en SignedXMS zijn gewijzigd in SHA256
Bijzonderheden
In .NET Framework 4.7 en eerder zijn SignedXML en SignedCMS standaard ingesteld op SHA1 voor sommige bewerkingen. Vanaf .NET Framework 4.7.1 is SHA256 standaard ingeschakeld voor deze bewerkingen. Deze wijziging is nodig omdat SHA1 niet langer als veilig wordt beschouwd.
Suggestie
Er zijn twee nieuwe contextswitchwaarden om te bepalen of SHA1 (onveilig) of SHA256 standaard wordt gebruikt:
- Switch.System.Security.Cryptography.Xml.UseInsecureHashAlgorithms
- Switch.System.Security.Cryptography.Pkcs.UseInsecureHashAlgorithms Voor applicaties die gericht zijn op het .NET Framework 4.7.1 en latere versies, als het gebruik van SHA256 ongewenst is, kunt u de standaardinstelling terugzetten naar SHA1 door de volgende configuratieschakelaar toe te voegen aan de runtime sectie van uw app-configuratiebestand:
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.Xml.UseInsecureHashAlgorithms=true;Switch.System.Security.Cryptography.Pkcs.UseInsecureHashAlgorithms=true" />
Voor toepassingen die zijn gericht op .NET Framework 4.7 en eerdere versies, kunt u zich voor deze wijziging aanmelden door de volgende configuratieswitch toe te voegen aan de runtime- sectie van uw app-configuratiebestand:
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.Xml.UseInsecureHashAlgorithms=false;Switch.System.Security.Cryptography.Pkcs.UseInsecureHashAlgorithms=false" />
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7.1 |
Soort | Opnieuw targeting |
Beïnvloede API's
- System.Security.Cryptography.Pkcs.CmsSigner
- System.Security.Cryptography.Xml.SignedXml
- System.Security.Cryptography.Xml.Reference
SignedXml.GetPublicKey retourneert RSACng op net462 (of lightup) zonder retargetingwijziging.
Bijzonderheden
Vanaf .NET Framework 4.6.2 is het concrete type van het object dat wordt geretourneerd door de SignedXml.GetPublicKey methode gewijzigd (zonder een quirk) van een CryptoServiceProvider-implementatie in een Cng-implementatie. Dit komt doordat de implementatie is gewijzigd van het gebruik van certificate.PublicKey.Key
in het gebruik van de interne certificate.GetAnyPublicKey
die wordt doorgestuurd naar RSACertificateExtensions.GetRSAPublicKey.
Suggestie
Vanaf apps die worden uitgevoerd op .NET Framework 4.7.1, kunt u de CryptoServiceProvider-implementatie die standaard wordt gebruikt in .NET Framework 4.6.1 en eerdere versies gebruiken door de volgende configuratieswitch toe te voegen aan de sectie runtime van uw app-configuratiebestand:
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.Xml.SignedXmlUseLegacyCertificatePrivateKey=true" />
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.6.2 |
Type | Opnieuw targeting |
Getroffen API's
Windows Communication Foundation (WCF)
Verbeterde toegankelijkheid voor sommige .NET SDK-hulpprogramma's
Bijzonderheden
In de .NET Framework SDK 4.7.1 zijn de hulpprogramma's SvcConfigEditor.exe en SvcTraceViewer.exe verbeterd door uiteenlopende toegankelijkheidsproblemen op te lossen. De meeste hiervan waren kleine problemen, zoals een naam die niet wordt gedefinieerd of bepaalde UI-automatiseringspatronen niet correct worden geïmplementeerd. Hoewel veel gebruikers zich niet bewust zouden zijn van deze onjuiste waarden, vinden klanten die ondersteunende technologieën zoals schermlezers gebruiken deze SDK-hulpprogramma's toegankelijker. Zeker, deze fixes veranderen enkele eerdere gedragingen, zoals de focusvolgorde van het toetsenbord. Als u alle toegankelijkheidsoplossingen in deze hulpprogramma's wilt ophalen, kunt u het volgende aan uw app.config-bestand toevoegen:
<runtime>
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false"/>
</runtime>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7.1 |
Type | Heroriënteren |
Windows Forms
Toegankelijkheidsverbeteringen in Besturingselementen voor Windows Forms
Bijzonderheden
Windows Forms verbetert de werking van toegankelijkheidstechnologieën om klanten van Windows Forms beter te ondersteunen. Dit zijn de volgende wijzigingen die beginnen met .NET Framework 4.7.1:
- Wijzigingen om de weergave tijdens de modus Hoog contrast te verbeteren.
- Wijzigingen om de ervaring van de eigenschappen-browser te verbeteren. Verbeteringen in de eigenschappenbrowser zijn onder andere het volgende:
- Betere navigatie met het toetsenbord door de verschillende selectievensters van de vervolgkeuzelijsten.
- Minder onnodige tabstops.
- Betere rapportage van controletypen.
- Verbeterd vertellergedrag.
- Wijzigingen om ontbrekende toegankelijkheidspatronen voor de gebruikersinterface in besturingselementen te implementeren.
Suggestie
Hoe u zich kunt afmelden voor deze wijzigingen Om ervoor te zorgen dat de toepassing gebruik kan maken van deze wijzigingen, 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:
- Het wordt opnieuw gecompileerd om het .NET Framework 4.7.1 te targeten. Deze toegankelijkheidswijzigingen zijn standaard ingeschakeld voor Windows Forms-toepassingen die gericht zijn op .NET Framework 4.7.1 of hoger.
- Het sluit zichzelf uit van het verouderde toegankelijkheidsgedrag door de volgende AppContext-switch toe te voegen aan de sectie
<runtime>
van het app.config-bestand en deze te configureren alsfalse
, zoals 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 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
.
Voor een overzicht van UI-automatisering, zie de UI Automation Overview.
Ondersteuning toegevoegd voor UI Automation-patronen en -eigenschappen
Toegankelijkheidsclients kunnen profiteren van nieuwe WinForms-toegankelijkheidsfunctionaliteit met behulp van algemene, openbaar beschreven aanroeppatronen. Deze patronen zijn niet specifiek voor WinForms. Toegankelijkheidsclients kunnen bijvoorbeeld de QueryInterface-methode aanroepen op de MAAS (IAccessible Interface) om een IServiceProvider-interface te verkrijgen. Als deze interface beschikbaar is, kunnen clients de QueryService-methode gebruiken om een IAccessibleEx-interface aan te vragen. Zie IAccessibleEx gebruiken vanuit een clientvoor meer informatie. Vanaf .NET Framework 4.7.1 zijn IServiceProvider en IAccessibleEx (indien van toepassing) beschikbaar voor WinForms-toegankelijkheidsobjecten.
.NET Framework 4.7.1 voegt ondersteuning toe voor de volgende ui-automatiseringspatronen en -eigenschappen:
De besturingselementen ToolStripSplitButton en ComboBox ondersteunen het patroon Uitvouwen/samenvouwen.
Het besturingselement ToolStripMenuItem heeft een eigenschapswaarde ControlTypeControlType.MenuItem.
Het besturingselement ToolStripItem ondersteunt de eigenschap NameProperty en het patroonUitvouwen/Samenvouwen.
Het controle-element ToolStripDropDownItem biedt ondersteuning voor AccessibleEvents, wat StateChange en NameChange aangeeft wanneer de vervolgkeuzelijst wordt uitgevouwen of samengevouwen.
Het besturingselement ToolStripDropDownButton heeft een eigenschap van het type ControlType met de waarde ControlType.MenuItem.
Het besturingselement DataGridViewCheckBoxCell ondersteunt de TogglePattern.
De besturingselementen NumericUpDown en DomainUpDown ondersteunen de eigenschap NameProperty en hebben een ControlType- van ControlType.Spinner.
Verbeteringen in het PropertyGrid-besturingselement Het .NET Framework 4.7.1 voegt de volgende verbeteringen toe aan het besturingselement PropertyBrowser:De knop Details in het foutdialoogvenster dat wordt weergegeven wanneer de gebruiker een onjuiste waarde invoert in het besturingselement PropertyGrid ondersteunt het patroon patroon uitvouwen/samenvouwen, status- en naamwijzigingsmeldingen en een eigenschap ControlType met de waarde ControlType.MenuItem.
Het berichtvenster dat wordt weergegeven wanneer de knop Details van het foutdialoogvenster is uitgevouwen, is nu met het toetsenbord toegankelijk, zodat Verteller de inhoud van het foutbericht kan aankondigen.
De AccessibleRole rijen in de PropertyGrid controle zijn gewijzigd van 'Rij' naar 'Cel'. De cel wordt toegewezen aan UIA ControlType 'DataItem', waarmee het de juiste sneltoetsen en Verteller-aankondigingen kan ondersteunen.
De PropertyGrid besturingselementrijen die koptekstitems vertegenwoordigen wanneer voor het besturingselement PropertyGrid een eigenschap PropertySort is ingesteld op PropertySort.Categorized een eigenschapswaarde van ControlType van ControlType.Buttonhebben.
De PropertyGrid besturingselementrijen die koptekstitems vertegenwoordigen wanneer voor het PropertyGrid besturingselement een eigenschap PropertySort is ingesteld op PropertySort.Categorized het patroon Uitvouwen/samenvouwenworden ondersteund.
Verbeterde toetsenbordnavigatie tussen het raster en de werkbalk erboven. Als u op Shift-Tab drukt, selecteert u nu de eerste knop Op de werkbalk in plaats van de hele werkbalk.
PropertyGrid weergegeven besturingselementen in de hoogcontrastmodus tekenen nu een focusrechthoek om de werkbalkknop die overeenkomt met de huidige PropertySort-eigenschapswaarde.
PropertyGrid besturingselementen die worden weergegeven in de modus Hoog contrast en met eigenschap PropertySort ingesteld op PropertySort.Categorized, zullen nu de achtergrond van categoriekoppen in een zeer contrasterende kleur weergeven.
PropertyGrid zorgt voor een beter onderscheid tussen werkbalkitems met focus en de werkbalkitems die de huidige waarde van de eigenschap PropertySort aangeven. Deze oplossing bestaat uit een wijziging in hoog contrast en een wijziging voor scenario's met niet-hoog contrast.
PropertyGrid werkbalkitems die de huidige waarde van de PropertySort-eigenschap aangeven en de TogglePatternondersteunen.
Verbeterde ondersteuning voor Verteller voor het onderscheiden van de geselecteerde uitlijning in de uitlijningskiezer.
Wanneer een leeg PropertyGrid-besturingselement op een formulier wordt weergegeven, krijgt het nu de focus, wat eerder niet het geval was.
Het gebruik van door het besturingssysteem gedefinieerde kleuren in thema's met hoog contrast
- De controls Button en CheckBox, waarop de eigenschap FlatStyle is ingesteld op FlatStyle.System, wat de standaardstijl is, gebruiken nu door het besturingssysteem gedefinieerde kleuren in het door het besturingssysteem bepaalde thema Hoog contrast wanneer geselecteerd. Voorheen waren tekst- en achtergrondkleuren niet contrasterend en waren ze moeilijk te lezen.
- De besturingselementen Button, CheckBox, RadioButton, Label, LinkLabelen GroupBox met de eigenschap Enabled ingesteld op niet waar gebruikten een gearceerde kleur om tekst weer te geven in thema's met hoog contrast, wat leidde tot een laag contrast ten opzichte van de achtergrond. Deze besturingselementen maken nu gebruik van de kleur "Uitgeschakelde tekst", zoals gedefinieerd door het besturingssysteem. Deze oplossing is van toepassing op besturingselementen waarbij de eigenschap
FlatStyle
is ingesteld op een andere waarde dan FlatStyle.System. Deze besturingselementen worden weergegeven door het besturingssysteem. - DataGridView geeft nu een zichtbare rechthoek weer rond de inhoud van de cel met de huidige focus. Voorheen was dit niet zichtbaar in bepaalde thema's met hoog contrast.
- ToolStripMenuItem besturingselementen waarvoor de eigenschap Enabled is ingesteld op onwaar gebruikt nu de kleur Uitgeschakelde tekst die is gedefinieerd door het besturingssysteem.
- ToolStripMenuItem besturingselementen met de eigenschap Checked ingesteld op waar wordt nu het bijbehorende vinkje weergegeven in een contrasterende systeemkleur. Voorheen was de kleur van het vinkje niet contrasterend genoeg en niet zichtbaar in thema's met hoog contrast. OPMERKING: Windows 10 heeft waarden gewijzigd voor sommige systeemkleuren met hoog contrast. Windows Forms Framework is gebaseerd op het Win32-framework. Voer voor de beste ervaring de nieuwste versie van Windows uit en meld u aan bij de meest recente wijzigingen in het besturingssysteem door een app.manifest-bestand toe te voegen in een testtoepassing en de volgende code uit te schakelen:
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
Verbeterde toetsenbordnavigatie
- Wanneer een ComboBox besturingselement de eigenschap DropDownStyle heeft ingesteld op ComboBoxStyle.DropDownList en het eerste besturingselement in de tabvolgorde van het formulier is, wordt er nu een focusrechthoek weergegeven wanneer het bovenliggende formulier wordt geopend met het toetsenbord. Vóór deze wijziging was de toetsenbordfocus op dit besturingselement, maar er is geen focusindicator weergegeven.
Verbeterde verteller-ondersteuning
Het MonthCalendar besturingselement heeft ondersteuning toegevoegd voor ondersteunende technologieën voor toegang tot het besturingselement, inclusief de mogelijkheid voor Verteller om de waarde van het besturingselement te lezen wanneer dit eerder niet mogelijk was.
Het besturingselement CheckedListBox meldt Verteller nu wanneer een CheckBox.CheckState eigenschap is gewijzigd. Eerder kreeg Verteller geen melding en als gevolg hiervan zouden gebruikers niet worden geïnformeerd dat de eigenschap CheckState is bijgewerkt.
Het besturingselement LinkLabel heeft de manier gewijzigd waarop het Verteller op de hoogte stelt van de tekst binnen het besturingselement. Eerder kondigde Verteller deze tekst twee keer aan en las '&' symbolen als echte tekst, ook al zijn ze niet zichtbaar voor een gebruiker. De gedupliceerde tekst is verwijderd uit de aankondigingen van Verteller, evenals onnodige "&" symbolen.
De DataGridViewCell controletypen rapporteren nu de status Alleen-lezen correct aan Verteller en andere ondersteunende technologieën.
Verteller kan nu het systeemmenu van onderliggende vensters lezen in [Multiple-Document Interface]~/docs/framework/winforms/advanced/multiple-document-interface-mdi-applications.md).
Verteller kan nu ToolStripMenuItem besturingselementen lezen met een ToolStripItem.Enabled eigenschap ingesteld op onwaar . Eerder kon Verteller zich niet richten op uitgeschakelde menu-items om de inhoud te lezen.
Naam | Waarde |
---|---|
Draagwijdte | Majoor |
Versie | 4.8 |
Type | Opnieuw targeting |
Getroffen API's
- ToolStripDropDownButton.CreateAccessibilityInstance()
- DomainUpDown.DomainUpDownAccessibleObject.Name
- MonthCalendar.AccessibilityObject
Windows Presentation Foundation (WPF)
Toegankelijkheidsverbeteringen in WPF
Bijzonderheden
Verbeteringen voor hoogcontrast
- De focus voor het besturingselement Expander 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 is nu dezelfde kleur als de uitgeschakelde tekst. In eerdere versies van .NET Framework was dat niet het geval.
- Uitgeschakelde en gerichte knoppen gebruiken nu de juiste themakleur. In eerdere versies van .NET Framework hebben ze dat niet gedaan.
- De dropdownknop is nu zichtbaar wanneer de stijl van een ComboBox controle is ingesteld op ToolBar.ComboBoxStyleKey. In eerdere versies van het .NET Framework was dit niet mogelijk.
- De sorteerindicatorpijl 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 als u er met de muis overheen gaat. In eerdere versies van .NET Framework is dit niet gelukt.
- De toetsenbordfocus op keuzerondjes is nu zichtbaar. In eerdere versies van het .NET Framework was deze functionaliteit niet beschikbaar.
- De selectievakjeskolom van besturingselement DataGrid gebruikt nu de verwachte kleuren voor toetsenbordfocusterugkoppeling. In eerdere versies van .NET Framework is dit niet gelukt.
- De focus-indicatoren van het toetsenbord zijn nu zichtbaar op ComboBox en ListBox besturingselementen. In eerdere versies van de .NET Framework was het niet mogelijk.
Verbeteringen in de interactie van schermlezers
- Expander bedieningselementen worden nu correct als groepen (uitvouwen/samenvouwen) aangekondigd door schermlezers.
- DataGridCell besturingselementen worden nu correct als gegevenscel in een raster (gelokaliseerd) aangekondigd door schermlezers.
- Schermlezers zullen nu de naam van een bewerkbare ComboBoxaankondigen.
- PasswordBox besturingselementen worden niet langer als 'geen item in zicht' aangekondigd 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 je 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 app-configuratiebestand en deze 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 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 |
Typ | Opnieuw targeting |
Beïnvloede API's
- AutomationElementIdentifiers.LiveSettingProperty
- AutomationElementIdentifiers.LiveRegionChangedEvent
- System.Windows.Automation.AutomationLiveSetting
- AutomationProperties.LiveSettingProperty
- AutomationProperties.SetLiveSetting(DependencyObject, AutomationLiveSetting)
- AutomationProperties.GetLiveSetting(DependencyObject)
- AutomationPeer.GetLiveSettingCore()
Selector SelectionChanged-gebeurtenis en eigenschap SelectedValue
Bijzonderheden
Vanaf .NET Framework 4.7.1 werkt een Selector altijd de waarde van de eigenschap SelectedValue bij voordat de SelectionChanged gebeurtenis wordt opgeroepen wanneer de selectie verandert. Hierdoor is de eigenschap SelectedValue consistent met de andere selectie-eigenschappen (SelectedItem en SelectedIndex), die worden bijgewerkt voordat de gebeurtenis wordt gegenereerd.
In .NET Framework 4.7 en eerdere versies is de update naar SelectedValue in de meeste gevallen uitgevoerd vóór de gebeurtenis, maar het gebeurde na de gebeurtenis als de selectiewijziging werd veroorzaakt door het wijzigen van de eigenschap SelectedValue.
Suggestie
Apps die zijn gericht op .NET Framework 4.7.1 of hoger, kunnen zich afmelden voor deze wijziging en verouderd gedrag gebruiken door het volgende toe te voegen aan de sectie <runtime>
van het toepassingsconfiguratiebestand:
<runtime>
<AppContextSwitchOverrides
value="Switch.System.Windows.Controls.TabControl.SelectionPropertiesCanLagBehindSelectionChangedEvent=true" />
</runtime>
Apps die zijn gericht op .NET Framework 4.7 of eerder, maar die worden uitgevoerd op .NET Framework 4.7.1 of hoger, kunnen het nieuwe gedrag inschakelen door de volgende regel toe te voegen aan de sectie <runtime>
van het configuratiebestand van de toepassing:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Controls.TabControl.SelectionPropertiesCanLagBehindSelectionChangedEvent=false" />
</runtime>
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7.1 |
Type | Opnieuw targeting |
Beïnvloede API's
TabControl SelectionChanged-gebeurtenis en eigenschap SelectedContent
Bijzonderheden
Vanaf .NET Framework 4.7.1 werkt een TabControl de waarde van de eigenschap SelectedContent bij voordat de SelectionChanged gebeurtenis wordt gegenereerd wanneer de selectie wordt gewijzigd. In .NET Framework 4.7 en eerdere versies is de update naar SelectedContent uitgevoerd na de gebeurtenis.
Suggestie
Apps die zijn gericht op .NET Framework 4.7.1 of hoger, kunnen zich afmelden voor deze wijziging en verouderd gedrag gebruiken door het volgende toe te voegen aan de sectie <runtime>
van het toepassingsconfiguratiebestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Controls.TabControl.SelectionPropertiesCanLagBehindSelectionChangedEvent=true" />
</runtime>
Apps die zijn gericht op .NET Framework 4.7 of eerder, maar die worden uitgevoerd op .NET Framework 4.7.1 of hoger, kunnen het nieuwe gedrag inschakelen door de volgende regel toe te voegen aan de sectie <runtime>
van het configuratiebestand van de toepassing:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Controls.TabControl.SelectionPropertiesCanLagBehindSelectionChangedEvent=false" />
</runtime>
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7.1 |
Type | Opnieuw targeting |
Betrokken API's
Het standaardhashalgoritme voor WPF PackageDigitalSignatureManager is nu SHA256
Bijzonderheden
De System.IO.Packaging.PackageDigitalSignatureManager
biedt functionaliteit voor digitale handtekeningen met betrekking tot WPF-pakketten. In de .NET Framework 4.7- en eerdere versies was SHA1 het standaardalgoritme (PackageDigitalSignatureManager.DefaultHashAlgorithm) dat wordt gebruikt voor ondertekeningsonderdelen van een pakket. Vanwege recente beveiligingsproblemen met SHA1 is deze standaardwaarde gewijzigd in SHA256 vanaf .NET Framework 4.7.1. Deze wijziging is van invloed op alle pakketondertekening, inclusief XPS-documenten.
Suggestie
Een ontwikkelaar die deze wijziging wil gebruiken terwijl deze is gericht op een frameworkversie die lager is dan .NET Framework 4.7.1 of een ontwikkelaar die de vorige functionaliteit nodig heeft, terwijl deze is gericht op .NET Framework 4.7.1 of hoger, kan de volgende AppContext-vlag op de juiste manier instellen. Een waarde van true leidt ertoe dat SHA1 wordt gebruikt als het standaardalgoritme; onwaar resulteert in SHA256.
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.MS.Internal.UseSha1AsDefaultHashAlgorithmForDigitalSignatures=true"/>
</runtime>
</configuration>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7.1 |
Type | Opnieuw targeting |
Betrokken API's
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 correlatiegegevens voor de InitializeCorrelation-activiteit in te stellen.
- Het inhoudsdefinitie-venster 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 worden samengevouwen met het toetsenbord de eerste keer dat ze de focus krijgen.
- 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 in de ReceiveReply en SendReply activiteiten te navigeren met tabbladen.
- 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 Uitzondering en de sectie Finally in de TryCatch-activiteit.
- De keuzelijst Berichttype, de schuifregelaar in het venster Correlatie-Initialisatoren toevoegen, het venster Inhoudsdefinitie en het venster CorrelatesOn Defintion in de berichtenactiviteiten (Receive, Send, SendReplyen ReceiveReply).
- Statusmachineovergangen en overgangen naar bestemmingen.
- Aantekeningen en verbindingsstukken voor de FlowDecision-activiteiten.
- De contextmenu's (met de rechtermuisknop) voor activiteiten.
- De editors voor eigenschapswaarden, de knop Zoeken wissen, de sorteerknoppen op Categorie en op Alfabetische volgorde, 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 Selecteren van .NET-type.
- Breadcrumbs in de workflow-ontwerper.
- 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 |
.NET Framework 4.7.2
Kern
Unicode Bidirectionele besturingstekens in URI's toestaan
Bijzonderheden
Unicode specificeert verschillende speciale controlekarakters die worden gebruikt om de oriëntatie van tekst op te geven. In eerdere versies van .NET Framework zijn deze tekens onjuist verwijderd van alle URI's, zelfs als ze aanwezig waren in hun procentcodeerde vorm. Om RFC 3987-beter te volgen, staan we deze tekens nu toe in URI's. Wanneer niet-gecodeerde waarden in een URI worden gevonden, worden ze gecodeerd met procenten. Wanneer procentcodering is gevonden, worden ze achtergelaten as-is.
Suggestie
Voor toepassingen die gericht zijn op versies van .NET Framework vanaf 4.7.2, is ondersteuning voor Unicode bidirectionele tekens standaard ingeschakeld. Als deze wijziging ongewenst is, kunt u deze uitschakelen door de volgende AppContextSwitchOverrides toe te voegen over te schakelen naar de sectie <runtime>
van het toepassingsconfiguratiebestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Uri.DontKeepUnicodeBidiFormattingCharacters=true" />
</runtime>
Voor toepassingen die gericht zijn op eerdere versies van .NET Framework, maar worden uitgevoerd onder versies die beginnen met .NET Framework 4.7.2, is ondersteuning voor Unicode-bidirectionele tekens standaard uitgeschakeld. U kunt dit inschakelen door de volgende AppContextSwitchOverrides toe te voegen over te schakelen naar de sectie <runtime>
van het toepassingsconfiguratiebestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Uri.DontKeepUnicodeBidiFormattingCharacters=false" />
</runtime>
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7.2 |
Typ | Opnieuw targeting |
Betrokken API's
DeflateStream maakt gebruik van systeemeigen API's voor decompressie
Bijzonderheden
Vanaf .NET Framework 4.7.2 is de implementatie van decomprimatie in de klasse T:System.IO.Compression.DeflateStream
standaard gewijzigd in het gebruik van systeemeigen Windows-API's. Dit resulteert doorgaans in een aanzienlijke prestatieverbetering. Alle .NET-toepassingen die zijn gericht op .NET Framework versie 4.7.2 of hoger, maken gebruik van de systeemeigen implementatie. Deze wijziging kan leiden tot enkele verschillen in gedrag, waaronder:
- Uitzonderingsberichten kunnen afwijken. Het type uitzondering dat is gegenereerd, blijft echter hetzelfde.
- Sommige speciale situaties, zoals onvoldoende geheugen om een bewerking te voltooien, kunnen anders worden verwerkt.
- Er zijn bekende verschillen voor het parseren van gzip-header (opmerking: alleen
GZipStream
ingesteld voor decompressie wordt beïnvloed): - Uitzonderingen bij het parseren van ongeldige headers kunnen op verschillende momenten worden opgeworpen.
- De systeemeigen implementatie dwingt af dat waarden voor sommige gereserveerde vlaggen in de gzip-header (bijvoorbeeld FLG-) zijn ingesteld op basis van de specificatie, waardoor er mogelijk een uitzondering wordt gegenereerd waarbij eerder ongeldige waarden werden genegeerd.
Suggestie
Als decompressie met systeemeigen API's het gedrag van uw app nadelig heeft beïnvloed, kunt u zich afmelden voor deze functie door de Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression
switch toe te voegen aan de sectie runtime
van uw app.config-bestand en deze in te stellen op true
:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression=true" />
</runtime>
</configuration>
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7.2 |
Type | Opnieuw targeting |
Getroffen API's
Zorg ervoor dat System.Uri gebruikmaakt van een consistente gereserveerde tekenset
Bijzonderheden
In System.Uriworden bepaalde procentcodeerde tekens die soms zijn gedecodeerd, nu consistent achtergelaten. Dit gebeurt in de eigenschappen en methoden die toegang hebben tot het pad, de query, het fragment of de gebruikersinfo-onderdelen van de URI. Het gedrag wordt alleen gewijzigd wanneer beide van de volgende waar zijn:
- De URI bevat de gecodeerde vorm van een van de volgende gereserveerde tekens:
:
,'
,(
,)
,!
of*
. - De URI bevat een Unicode- of gecodeerd niet-gereserveerd teken. Als beide bovenstaande waarden waar zijn, worden de gecodeerde gereserveerde tekens achtergelaten. In eerdere versies van .NET Framework worden ze gedecodeerd.
Suggestie
Voor toepassingen die gericht zijn op versies van .NET Framework vanaf 4.7.2, is het nieuwe decoderingsgedrag standaard ingeschakeld. Als deze wijziging ongewenst is, kunt u deze uitschakelen door de volgende AppContextSwitchOverrides toe te voegen over te schakelen naar de sectie <runtime>
van het toepassingsconfiguratiebestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Uri.DontEnableStrictRFC3986ReservedCharacterSets=true" />
</runtime>
Voor toepassingen die gericht zijn op eerdere versies van .NET Framework, maar worden uitgevoerd onder versies die beginnen met .NET Framework 4.7.2, is het nieuwe decoderingsgedrag standaard uitgeschakeld. U kunt dit inschakelen door de volgende AppContextSwitchOverrides-schakelaar toe te voegen aan de <runtime>
-sectie van het toepassingsconfiguratiebestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Uri.DontEnableStrictRFC3986ReservedCharacterSets=false" />
</runtime>
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7.2 |
Type | Opnieuw targeting |
Getroffen API's
Resgen weigert inhoud van het web te laden
Bijzonderheden
.resx-bestanden kunnen binaire indelingsinvoer bevatten. Als u probeert resgen te gebruiken om een bestand te laden dat is gedownload van een niet-vertrouwde locatie, kan de invoer niet standaard worden geladen.
Suggestie
Resgen-gebruikers die binair opgemaakte invoer van niet-vertrouwde locaties moeten laden, kunnen ofwel de markering "Mark of the Web" uit het invoerbestand verwijderen of de opt-out aanpassing toepassen. Voeg de volgende registerinstelling toe om de algehele opt-out aanpassing toe te passen: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\SDK] "AllowProcessOfUntrustedResourceFiles"="true"
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7.2 |
Type | Opnieuw targeting |
Stacktraceringen die worden verkregen bij het gebruik van draagbare PDBs bevatten nu bronbestands- en regelgegevens, indien aangevraagd
Bijzonderheden
Vanaf .NET Framework 4.7.2 bevatten stacktraceringen die zijn verkregen bij het gebruik van draagbare PDBs bronbestand en regelinformatie wanneer dit wordt aangevraagd. In versies vóór .NET Framework 4.7.2 zijn bronbestands- en regelgegevens niet beschikbaar bij het gebruik van draagbare PDBs, zelfs als dit expliciet wordt aangevraagd.
Suggestie
Voor toepassingen die zijn gericht op .NET Framework 4.7.2, kunt u zich afmelden voor bronbestand- en regelinformatie bij het gebruik van draagbare PDB-bestanden als dit niet wenselijk is door het volgende toe te voegen aan de sectie <runtime>
van uw app.config
-bestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Diagnostics.IgnorePortablePDBsInStackTraces=true" />
</runtime>
Voor toepassingen die gericht zijn op eerdere versies van .NET Framework, maar worden uitgevoerd op .NET Framework 4.7.2 of hoger, kunt u zich aanmelden voor het bronbestand en regelinformatie bij het gebruik van draagbare PDF-bestanden door het volgende toe te voegen aan de sectie <runtime>
van uw app.config
-bestand:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Diagnostics.IgnorePortablePDBsInStackTraces=false" />
</runtime>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7.2 |
Type | Opnieuw targeting |
Getroffen API's
Windows Forms
Toegankelijkheidsverbeteringen in Besturingselementen voor Windows Forms voor .NET 4.7.2
Bijzonderheden
Windows Forms Framework verbetert de werking van 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 om de toetsenbordnavigatie in de besturingselementen DataGridView en MenuStrip te verbeteren.
- Wijzigingen in interactie met Verteller.
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.7.2 of hoger. De toepassing kan op een van de volgende manieren profiteren van deze wijzigingen:
- Het wordt opnieuw gecompileerd om het .NET Framework 4.7.2 te targeten. Deze toegankelijkheidswijzigingen zijn standaard ingeschakeld voor Windows Forms-toepassingen die gericht zijn op .NET Framework 4.7.2 of hoger.
- Het richt zich op .NET Framework 4.7.1 of een eerdere versie en sluit zich uit van het legacy-gedrag voor toegankelijkheid door de volgende AppContext Switch toe te voegen aan de
<runtime>
-sectie van het app-configuratiebestand en dit in te stellen opfalse
, zoals weergegeven 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;Switch.UseLegacyAccessibilityFeatures.2=false" />
</runtime>
</configuration>
Als u zich wilt aanmelden voor de toegankelijkheidsfuncties die zijn toegevoegd in .NET Framework 4.7.2, moet u zich ook aanmelden voor toegankelijkheidsfuncties van .NET Framework 4.7.1. Toepassingen die zijn gericht op .NET Framework 4.7.2 of hoger en die het oudere toegankelijkheidsgedrag willen behouden, kunnen zich aanmelden voor het gebruik van verouderde toegankelijkheidsfuncties door deze AppContext-switch expliciet in te stellen op true
.
Het gebruik van door het besturingssysteem gedefinieerde kleuren in thema's met hoog contrast
- De vervolgkeuzepijl van het ToolStripDropDownButton gebruikt nu door het besturingssysteem gedefinieerde kleuren in het thema Hoog contrast.
- Button, RadioButton en CheckBox bedieningsknoppen met FlatStyle ingesteld op FlatStyle.Flat of FlatStyle.Popup gebruiken nu door het besturingssysteem gedefinieerde kleuren in het thema Hoog contrast wanneer geselecteerd. Voorheen waren tekst- en achtergrondkleuren niet contrasterend en waren ze moeilijk te lezen.
- Besturingselementen in een GroupBox waarop de eigenschap Enabled is ingesteld op
false
gebruiken nu door het besturingssysteem gedefinieerde kleuren in het thema Hoog contrast. - De besturingselementen ToolStripButton, ToolStripComboBoxen ToolStripDropDownButton hebben een verhoogde helderheidscontrastverhouding in de modus Hoog contrast.
- DataGridViewLinkCell gebruikt standaard door het besturingssysteem gedefinieerde kleuren in de modus Hoog contrast voor de eigenschap DataGridViewLinkCell.LinkColor. OPMERKING: Windows 10 heeft waarden gewijzigd voor sommige systeemkleuren met hoog contrast. Windows Forms Framework is gebaseerd op het Win32-framework. Voer voor de beste ervaring de nieuwste versie van Windows uit en meld u aan bij de meest recente wijzigingen in het besturingssysteem door een app.manifest-bestand toe te voegen in een testtoepassing en de volgende code uit te schakelen:
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
Verbeterde verteller-ondersteuning
- Verteller kondigt nu de waarde van de eigenschap ToolStripMenuItem.ShortcutKeys aan wanneer hij de tekst van een ToolStripMenuItemaankondigt.
- Verteller geeft nu aan wanneer een ToolStripMenuItem de eigenschap Enabled heeft ingesteld op
false
. - Verteller geeft nu feedback over de status van een selectievakje wanneer de eigenschap ListView.CheckBoxes is ingesteld op
true
. - De focusvolgorde van de scanmodus van Verteller is nu consistent met de visuele volgorde van de bedieningselementen in het ClickOnce-downloadvenster.
Verbeterde ondersteuning voor DataGridView-toegankelijkheid
- Rijen in een DataGridView kunnen nu worden gesorteerd met behulp van het toetsenbord. Een gebruiker kan nu de F3-sleutel gebruiken om te sorteren op de huidige kolom.
- Wanneer de DataGridView.SelectionMode is ingesteld op DataGridViewSelectionMode.FullRowSelect, verandert de kolomkop de kleur om de huidige kolom aan te geven als de gebruiker door de cellen in de huidige rij loopt.
- De eigenschap DataGridViewCell.DataGridViewCellAccessibleObject.Parent retourneert nu het juiste bovenliggende besturingselement.
verbeterde visuele aanwijzingen
- De besturingselementen RadioButton en CheckBox met een lege eigenschap Text geven nu een focusindicator weer wanneer ze de focus krijgen.
verbeterde ondersteuning voor Property Grid
De PropertyGrid controlekindelementen geven nu alleen een
true
terug voor de eigenschap IsReadOnlyProperty wanneer een PropertyGrid-element is ingeschakeld.De control child-elementen PropertyGrid retourneren nu een
Verbeterde toetsenbordnavigatiefalse
voor de eigenschap IsEnabledProperty alleen wanneer een PropertyGrid-element door de gebruiker gewijzigd kan worden. Ga voor een overzicht van UI-automatisering naar de UI Automation-overzicht.ToolStripButton staat nu de focus toe wanneer deze zich in een ToolStripPanel bevindt waarop de eigenschap TabStop is ingesteld op
true
.
Naam | Waarde |
---|---|
Draagwijdte | Majoor |
Versie | 4.7.2 |
Type | Opnieuw targeting |
De eigenschap ContextMenuStrip.SourceControl bevat een geldig besturingselement als er sprake is van geneste ToolStripMenuItems.
Bijzonderheden
In de .NET Framework 4.7.1 en eerdere versies retourneert de eigenschap ContextMenuStrip.SourceControl onterecht null wanneer de gebruiker het menu opent vanuit geneste ToolStripMenuItem-besturingselementen. In .NET Framework 4.7.2 en hoger is SourceControl eigenschap altijd ingesteld op het werkelijke broncodebeheer.
Suggestie
Hoe u zich kunt afmelden voor deze wijzigingen Om een toepassing te kunnen profiteren van deze wijzigingen, moet deze worden uitgevoerd op .NET Framework 4.7.2 of hoger. De toepassing kan op een van de volgende manieren profiteren van deze wijzigingen:
- Het is gericht op .NET Framework 4.7.2. Deze wijziging is standaard ingeschakeld voor Windows Forms-toepassingen die zijn gericht op .NET Framework 4.7.2 of hoger.
- Het richt zich op .NET Framework 4.7.1 of een eerdere versie en maakt opt-out van de verouderde toegankelijkheidsgedragingen door de volgende AppContext Switch- toe te voegen aan de sectie
<runtime>
in het bestand app.config en deze in te stellen opfalse
, zoals in het volgende voorbeeld wordt weergegeven.
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue=false"/>
</runtime>
Toepassingen die gericht zijn op .NET Framework 4.7.2 of hoger en die het verouderde gedrag willen behouden, kunnen zich aanmelden voor het gebruik van de verouderde broncodebeheerwaarde door deze AppContext-switch expliciet in te stellen op true
.
Naam | Waarde |
---|---|
Draagwijdte | Edge |
Versie | 4.7.2 |
Type | Opnieuw targeting |
Getroffen API's
Met de methode PrivateFontCollection.AddFontFile worden lettertyperesources uitgebracht
Bijzonderheden
In .NET Framework 4.7.1 en eerdere versies geeft de System.Drawing.Text.PrivateFontCollection klasse de GDI+ lettertypebronnen niet vrij nadat de PrivateFontCollection is verwijderd voor Font objecten die aan deze verzameling worden toegevoegd met behulp van de methode AddFontFile(String). In .NET Framework 4.7.2 en hoger geeft Dispose de GDI+-lettertypen uit die als bestanden aan de verzameling zijn toegevoegd.
Suggestie
Hoe u zich kunt afmelden voor deze wijzigingen Om een toepassing te kunnen profiteren van deze wijzigingen, moet deze worden uitgevoerd op .NET Framework 4.7.2 of hoger. De toepassing kan op een van de volgende manieren profiteren van deze wijzigingen:
- Het wordt opnieuw gecompileerd om het .NET Framework 4.7.2 te targeten. Deze wijziging is standaard ingeschakeld voor Windows Forms-toepassingen die zijn gericht op .NET Framework 4.7.2 of hoger.
- Het richt zich op .NET Framework 4.7.1 of een eerdere versie en meldt zich af voor de verouderde toegankelijkheidsfuncties door de volgende AppContext Switch toe te voegen aan de sectie
<runtime>
van het app.config-bestand en deze in te stellen opfalse
, zoals in het volgende voorbeeld wordt weergegeven.
<runtime>
<AppContextSwitchOverrides value="Switch.System.Drawing.Text.DoNotRemoveGdiFontsResourcesFromFontCollection=false"/>
</runtime>
Toepassingen die gericht zijn op .NET Framework 4.7.2 of hoger en die het verouderde gedrag willen behouden, kunnen ervoor kiezen om geen lettertyperesources vrij te geven door deze AppContext-switch expliciet in te stellen op true
.
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7.2 |
Type | Opnieuw targeting |
Getroffen API's
De acties voor de omhoogknop en omlaagknop binnen WinForm zijn nu gesynchroniseerd.
Bijzonderheden
In .NET Framework 4.7.1 en eerdere versies wordt de DomainUpDown.UpButton() actie van het DomainUpDown besturingselement genegeerd wanneer tekst van het besturingselement aanwezig is en moet de ontwikkelaar DomainUpDown.DownButton() actie op het besturingselement gebruiken voordat DomainUpDown.UpButton() actie wordt gebruikt. Vanaf .NET Framework 4.7.2 werken zowel de DomainUpDown.UpButton() als DomainUpDown.DownButton() acties onafhankelijk in dit scenario en blijven ze gesynchroniseerd.
Suggestie
Als een toepassing van deze wijzigingen kan profiteren, moet deze worden uitgevoerd op .NET Framework 4.7.2 of hoger. De toepassing kan op een van de volgende manieren profiteren van deze wijzigingen:
- Het wordt opnieuw gecompileerd om het .NET Framework 4.7.2 te targeten. Deze wijziging is standaard ingeschakeld voor Windows Forms-toepassingen die zijn gericht op .NET Framework 4.7.2 of hoger.
- Het vermijdt het verouderde schuifgedrag door de volgende AppContext Switch toe te voegen aan de
<runtime>
-sectie van het app-configuratiebestand en in te stellen opfalse
, zoals het volgende voorbeeld laat zien.
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling=false"/>
</runtime>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7.2 |
Typ | Heroriënteren |
Betrokken API's
Windows Presentation Foundation (WPF)
De focus van het toetsenbord wordt nu correct verplaatst over meerdere lagen van WinForms/WPF-hosting
Bijzonderheden
Overweeg een WPF-toepassing die als host fungeert voor een WinForms-besturingselement dat op zijn beurt WPF-besturingselementen host. Gebruikers kunnen mogelijk niet tabben uit de WinForms-laag als het eerste of laatste element in die laag de WPF-System.Windows.Forms.Integration.ElementHost
is. Met deze wijziging wordt dit probleem opgelost en kunnen gebruikers nu via het tabblad de WinForms-laag verlaten. Geautomatiseerde toepassingen die afhankelijk zijn van focus in de WinForms-laag, werken mogelijk niet meer zoals verwacht.
Suggestie
Een ontwikkelaar die deze wijziging wil gebruiken terwijl deze is gericht op een frameworkversie die lager is dan .NET 4.7.2, kan de volgende set AppContext-vlaggen instellen op false om de wijziging in te schakelen.
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false"/>
</runtime>
</configuration>
WPF-toepassingen moeten zich aanmelden voor alle verbeteringen in de vroege toegankelijkheid om de latere verbeteringen te verkrijgen. Met andere woorden, zowel de Switch.UseLegacyAccessibilityFeatures
- als de Switch.UseLegacyAccessibilityFeatures.2
-switches moeten zijn ingesteld. Een ontwikkelaar die de vorige functionaliteit nodig heeft terwijl hij zich richt op .NET 4.7.2 of hoger, kan de volgende AppContext-vlag op 'true' instellen om de wijziging uit te schakelen.
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures.2=true"/>
</runtime>
</configuration>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7.2 |
Soort | Opnieuw targeting |
Het standaardhashalgoritme voor de Markup Compiler van WPF is nu SHA256
Bijzonderheden
De WPF MarkupCompiler biedt compilatieservices voor XAML-markeringsbestanden. In .NET Framework 4.7.1 en eerdere versies was SHA1 het standaard-hashalgoritme dat wordt gebruikt voor controlesommen. Vanwege recente beveiligingsproblemen met SHA1 is deze standaardwaarde gewijzigd in SHA256 vanaf .NET Framework 4.7.2. Deze wijziging is van invloed op alle controlesomgeneratie voor markeringsbestanden tijdens de compilatie.
Suggestie
Een ontwikkelaar die zich richt op .NET Framework 4.7.2 of hoger en die wil terugkeren naar sha1-hashinggedrag, moet de volgende AppContext-vlag instellen.
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Markup.DoNotUseSha256ForMarkupCompilerChecksumAlgorithm=true"/>
</runtime>
</configuration>
Een ontwikkelaar die SHA256-hashing wil gebruiken terwijl deze is gericht op een frameworkversie onder .NET 4.7.2, moet de onderstaande AppContext-vlag instellen. Houd er rekening mee dat de geïnstalleerde versie van .NET Framework 4.7.2 of hoger moet zijn.
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Markup.DoNotUseSha256ForMarkupCompilerChecksumAlgorithm=false"/>
</runtime>
</configuration>
Naam | Waarde |
---|---|
Draagwijdte | Doorzichtig |
Versie | 4.7.2 |
Typ | Opnieuw targeting |
WPF AppDomain-afsluitbeheer kan nu Dispatcher.Invoke aanroepen tijdens het opruimen van zwakke gebeurtenissen.
Bijzonderheden
In .NET Framework 4.7.1 en eerdere versies kan WPF mogelijk een System.Windows.Threading.Dispatcher creëren op de .NET-finalizerthread tijdens het sluiten van AppDomain. Dit is opgelost in .NET Framework 4.7.2 en latere versies door zwakke gebeurtenissen thread-bewust op te schonen. Hierdoor kan WPF Dispatcher.Invoke aanroepen om het opschoonproces te voltooien. In bepaalde toepassingen kan deze wijziging in de timing van de finalizer mogelijk uitzonderingen veroorzaken tijdens het afsluiten van AppDomain of proces. Dit wordt over het algemeen gezien in toepassingen die dispatchers die worden uitgevoerd op werkthreads niet correct afsluiten vóór het proces of het afsluiten van AppDomain. Dergelijke toepassingen moeten ervoor zorgen dat de levensduur van dispatchers goed wordt beheerd.
Suggestie
In .NET Framework 4.7.2 en latere versies kunnen ontwikkelaars deze oplossing uitschakelen om tijdsproblemen die kunnen optreden als gevolg van de opschoonwijziging, te helpen verlichten (maar niet elimineren). Gebruik de volgende AppContext-vlag om de wijziging in opschoning uit te schakelen.
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.MS.Internal.DoNotInvokeInWeakEventTableShutdownListener=true"/>
</runtime>
</configuration>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7.2 |
Type | Opnieuw targeting |
WPF: een primaire sleutel wijzigen bij het weergeven van ADO-gegevens in een master-/detailscenario
Bijzonderheden
Stel dat u een ADO-verzameling items van het type Order
hebt, met een relatie met de naam 'OrderDetails' die betrekking heeft op een verzameling items van het type Detail
via de primaire sleutel 'OrderID'. In uw WPF-app kunt u een lijstbesturingselement binden aan de details voor een bepaalde bestelling:
<ListBox ItemsSource="{Binding Path=OrderDetails}" >
waarbij DataContext een Order
is. WPF haalt de waarde op van de eigenschap OrderDetails
- een verzameling D van alle Detail
items waarvan de OrderID
overeenkomt met de OrderID
van het hoofditem. De gedragswijziging ontstaat wanneer u de primaire sleutel OrderID
van het hoofditem wijzigt. ADO wijzigt automatisch de OrderID
van elk van de betrokken records in de verzameling Details (namelijk de records die zijn gekopieerd naar verzameling D). Maar wat gebeurt er met D?
- Oud gedrag: De verzameling D is leeggemaakt. Het hoofditem geeft geen wijzigingsmelding voor eigenschap
OrderDetails
. De keuzelijst blijft verzameling D gebruiken, die nu leeg is. - Nieuw gedrag: Verzameling D is ongewijzigd. Elk van de items genereert een wijzigingsmelding voor de eigenschap
OrderID
. De keuzelijst blijft verzameling D gebruiken en geeft met de nieuweOrderID
de details weer. WPF implementeert het nieuwe gedrag door verzameling D op een andere manier te maken: door de ADO-methode aan te roepen DataRowView.CreateChildView(DataRelation, Boolean) met het argumentfollowParent
ingesteld optrue
.
Suggestie
Een app krijgt het nieuwe gedrag met behulp van de volgende AppContext-switch.
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Data.DoNotUseFollowParentWhenBindingToADODataRelation=false"/>
</runtime>
</configuration>
De schakeloptie wordt standaard ingesteld op true
(oud gedrag) voor apps die zijn gericht op .NET 4.7.1 of lager, en op false
(nieuw gedrag) voor apps die zijn gericht op .NET 4.7.2 of hoger.
Naam | Waarde |
---|---|
Draagwijdte | Minderjarige |
Versie | 4.7.2 |
Type | Opnieuw targeting |
WPF FocusVisual voor RadioButton en CheckBox wordt nu correct weergegeven wanneer de besturingselementen geen inhoud hebben.
Bijzonderheden
In .NET Framework 4.7.1 en eerdere versies hebben WPF System.Windows.Controls.CheckBox en System.Windows.Controls.RadioButton inconsistente en in klassieke en hoogcontrastthema's onjuiste focusvisuals. Deze problemen treden op in gevallen waarin de besturingselementen geen inhoudsset hebben. Hierdoor kan de overgang tussen thema's verwarrend zijn en de focusvisual moeilijk te zien is. In .NET Framework 4.7.2 zijn deze visuals nu consistenter voor thema's en gemakkelijker zichtbaar in klassieke en hoog contrastthema's.
Suggestie
Een ontwikkelaar die werkt met .NET Framework 4.7.2 en wil terugkeren naar het gedrag van .NET 4.7.1, moet de volgende AppContext-vlag instellen.
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures.2=true;"/>
</runtime>
</configuration>
Een ontwikkelaar die deze wijziging wil gebruiken terwijl deze is gericht op een frameworkversie die lager is dan .NET 4.7.2, moet de volgende AppContext-vlaggen instellen. Houd er rekening mee dat alle vlaggen op de juiste wijze moeten worden ingesteld en dat de geïnstalleerde versie van .NET Framework 4.7.2 of hoger moet zijn. WPF-toepassingen moeten zich aanmelden voor alle eerdere toegankelijkheidsverbeteringen om de nieuwste verbeteringen te verkrijgen. Om dit te doen, moet u ervoor zorgen dat zowel de AppContext-schakeloptie Switch.UseLegacyAccessibilityFeatures' als 'Switch.UseLegacyAccessibilityFeatures.2' is ingesteld op false.
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;"/>
</runtime>
</configuration>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7.2 |
Type | Opnieuw targeting |
De tekstselectie van de WPF TextBox/PasswordBox volgt de systeemkleuren niet
Bijzonderheden
In .NET Framework 4.7.1 en eerdere versies konden WPF-System.Windows.Controls.TextBox
en System.Windows.Controls.PasswordBox
alleen een tekstselectie weergeven in de versieringslaag. In sommige systeemthema's zou dit tekst verbergen, waardoor het moeilijk te lezen is. In .NET Framework 4.7.2 en later hebben ontwikkelaars de mogelijkheid om een selectierenderingsschema in te schakelen dat niet op Adorner is gebaseerd, wat dit probleem verhelpt.
Suggestie
Een ontwikkelaar die deze wijziging wil gebruiken, moet de volgende AppContext-vlag op de juiste manier instellen. Als u deze functie wilt gebruiken, moet de geïnstalleerde .NET Framework-versie 4.7.2 of hoger zijn. Om de niet-versieringsgebaseerde selectie in te schakelen, gebruikt u de volgende AppContext-vlag.
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering=false"/>
</runtime>
</configuration>
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7.2 |
Type | Opnieuw targeting |
Windows Workflow Foundation (WF)
Eindeloze recursie voor IWorkflowInstanceManagement.TransactedCancel en IWorkflowInstanceManagement.TransactedTerminate vermijden
Bijzonderheden
Onder bepaalde omstandigheden, wanneer u IWorkflowInstanceManagement.TransactedCancel- of IWorkflowInstanceManagement.TransactedTerminate-API's gebruikt om een werkstroomservice-exemplaar te annuleren of te beëindigen, kan het werkstroomservice-exemplaar een stack overflow ondervinden als gevolg van eindeloze recursie wanneer de Workflow
-runtime probeert het service-exemplaar op te slaan als onderdeel van de verwerking van de aanvraag. Het probleem treedt op als het werkstroomexemplaar in een staat verkeert waar het wacht op een andere openstaande WCF-aanvraag naar een andere service om te voltooien. Met de bewerkingen TransactedCancel
en TransactedTerminate
worden werkitems gemaakt die in de wachtrij worden geplaatst voor de werkstroomservice-instance. Deze werkitems worden niet uitgevoerd als onderdeel van de verwerking van de TransactedCancel/TransactedTerminate
aanvraag. Omdat het exemplaar van de werkstroomservice druk is met wachten op de voltooiing van de andere openstaande WCF-aanvraag, blijft het aangemaakte werkitem in de wachtrij staan. De TransactedCancel/TransactedTerminate
bewerking is voltooid en het besturingselement wordt teruggezet naar de client. Wanneer de transactie die is gekoppeld aan de TransactedCancel/TransactedTerminate
-bewerking probeert door te voeren, moet deze de toestand van de werkstroomservice-instantie behouden. Maar omdat er een openstaand WCF
verzoek voor de instantie is, kan de workflowruntime de instantie van de werkstroomservice niet opslaan, en resulteert een eindeloze recursielus in stack overflow. Omdat TransactedCancel
en TransactedTerminate
alleen een werkitem in het geheugen maken, heeft het feit dat er een transactie bestaat geen effect. Een terugdraaiactie van de transactie negeert het werkitem niet. Om dit probleem op te lossen, hebben we vanaf .NET Framework 4.7.2 een AppSetting
geïntroduceerd die kan worden toegevoegd aan de web.config/app.config
van de werkstroomservice waarmee wordt aangegeven dat transacties voor TransactedCancel
en TransactedTerminate
moeten worden genegeerd. Hierdoor kan de transactie worden doorgevoerd zonder te wachten tot de workflow-instantie wordt opgeslagen. De AppSetting voor deze functie heeft de naam microsoft:WorkflowServices:IgnoreTransactionsForTransactedCancelAndTransactedTerminate
. Een waarde van true
geeft aan dat de transactie moet worden genegeerd, waardoor de stack-overloop wordt vermeden. De standaardwaarde van deze AppSetting is false
, zodat bestaande exemplaren van de werkstroomservice niet worden beïnvloed.
Suggestie
Als u AppFabric of een andere IWorkflowInstanceManagement-client gebruikt en een stack-overflow in de werkstroomservice-instantie tegenkomt wanneer u een werkstroomexemplaar wilt annuleren of beëindigen, kunt u het volgende toevoegen aan de sectie <appSettings>
van het web.config/app.config-bestand voor de werkstroomservice:
<add key="microsoft:WorkflowServices:IgnoreTransactionsForTransactedCancelAndTransactedTerminate" value="true"/>
Als u het probleem niet tegenkomt, hoeft u dit niet te doen.
Naam | Waarde |
---|---|
Draagwijdte | Rand |
Versie | 4.7.2 |
Type | Opnieuw targeting |