Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln visas de problem med appkompatibilitet som introducerades i .NET Framework 4.8 och 4.8.1.
.NET Framework 4.8
Kärna
Hanterade kryptografiklasser genererar inte kryptografiException i FIPS-läge
Detaljer
I .NET Framework 4.7.2 och tidigare versioner kan hanterade kryptografiska providerklasser som SHA256Managed generera en CryptographicException om systemets kryptografiska bibliotek konfigureras i FIPS-läge. Dessa undantag genereras eftersom de hanterade versionerna inte har genomgått FIPS-certifiering (Federal Information Processing Standards) 140-2, samt för att blockera kryptografiska algoritmer som inte ansågs vara godkända baserat på FIPS-reglerna. Eftersom få utvecklare har sina utvecklingsdatorer i FIPS-läge genereras dessa undantag ofta endast i produktionssystem. Program som riktar sig mot .NET Framework 4.8 och senare versioner växlar automatiskt till den nyare, avslappnade principen, så att en CryptographicException inte längre genereras som standard i sådana fall. I stället omdirigerar de hanterade kryptografiklasserna kryptografiska åtgärder till ett systemkryptografibibliotek. Den här principändringen tar effektivt bort en potentiellt förvirrande skillnad mellan utvecklarmiljöer och produktionsmiljöer och gör att inbyggda komponenter och hanterade komponenter fungerar enligt samma kryptografiska princip.
Förslag
Om det här beteendet är oönskat kan du välja bort det och återställa det tidigare beteendet så att en CryptographicException utlöses i FIPS-läge genom att lägga till följande AppContextSwitchOverrides konfigurationsinställning i <körning> avsnittet i programkonfigurationsfilen:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=true" />
</runtime>
Om ditt program är avsett för .NET Framework 4.7.2 eller tidigare kan du också välja den här ändringen genom att lägga till följande AppContextSwitchOverrides konfigurationsinställning i <körningsavsnittet> i programkonfigurationsfilen:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
| Namn | Värde |
|---|---|
| Omfattning | Kant |
| Utgåva | 4.8 |
| Typ | Omriktning |
Berörda API:er
- 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-formulär
Tillgänglighetsförbättringar i Windows Forms-kontroller för .NET 4.8
Detaljer
Windows Forms Framework fortsätter att förbättra hur det fungerar med hjälpmedelstekniker för att bättre stödja Windows Forms-kunder. Dessa inkluderar följande ändringar:
- Ändringar för att förbättra visningen under högkontrastläge.
- Ändringar i interaktionen med Skärmläsaren.
- Ändringar i den tillgängliga hierarkin (förbättra navigeringen via UI Automation-trädet).
Förslag
Så här väljer du in eller ut dessa ändringar För att programmet ska kunna dra nytta av dessa ändringar måste det köras på .NET Framework 4.8. Programmet kan välja dessa ändringar på något av följande sätt:
- Den kompileras om för att rikta in sig på .NET Framework 4.8. Dessa hjälpmedelsändringar aktiveras som standard i Windows Forms-program som riktar sig mot .NET Framework 4.8.
- Den riktar sig mot .NET Framework 4.7.2 eller tidigare version och väljer bort äldre hjälpmedelsbeteenden genom att lägga till följande AppContext switch till sektionen
<runtime>i appkonfigurationsfilen och ställa den påfalse, som följande exempel visar.
<?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>
Observera att om du vill välja hjälpmedelsfunktioner som lagts till i .NET Framework 4.8 måste du också välja hjälpmedelsfunktioner i .NET Framework 4.7.1 och 4.7.2. Program som riktar in sig på .NET Framework 4.8 och vill bevara det ursprungliga hjälpmedelsbeteendet kan välja att använda aktuella hjälpmedelsfunktioner genom att uttryckligen ställa in denna AppContext-växel på true. För att aktivera stöd för anrop av knappbeskrivningar måste du lägga till raden Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false i värdet för AppContextSwitchOverrides.
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false" />
Observera att aktivering av den här funktionen kräver att du väljer ovan nämnda hjälpmedelsfunktioner i .NET Framework 4.7.1– 4.8. Om någon av hjälpmedelsfunktionerna inte är aktiverade, men verktygstipsvisningsfunktionen har valts, kastas ett körningsfel NotSupportedException vid den första åtkomsten till dessa funktioner. Undantagsmeddelandet anger att verktygstips för tangentbord kräver hjälpmedelsförbättringar på nivå 3 för att kunna aktiveras.
Användning av OS-definierade färger i högkontrasteman
- Förbättrade högkontrasteman.
förbättrat Narrator-stöd
- Skärmläsaren meddelar nu sorteringsriktningen för DataGridViewColumn när ett tillgängligt namn på en DataGridViewCellmeddelas.
Förbättrat stöd för CheckedListBox-tillgänglighet
- Förbättrat skärmläsarstöd för CheckedListBox-styrenheten. När du navigerar till CheckedListBox-kontrollen med hjälp av tangentbordet, fokuserar Narrator på CheckedListBox-objektet och meddelar det.
- En tom CheckListBox-kontroll har nu en fokusrektangel ritad för ett virtuellt första objekt när kontrollen blir fokuserad.
förbättrat hjälpmedelsstöd för kombinationsruta
Aktiverat UI Automation-stöd för ComboBox kontroll, med möjlighet att använda UI Automation-meddelanden och andra UI Automation-funktioner. förbättrat åtkomststöd för DataGridView
Aktiverat UI Automation-stöd för DataGridView kontroll med möjlighet att använda UI Automation-meddelanden och andra UI Automation-funktioner.
UI Automation-elementet som motsvarar DataGridViewComboBoxEditingControl eller DataGridViewTextBoxEditingControl är nu underordnat motsvarande redigeringscell.
Förbättrat hjälpmedelsstöd för LinkLabel
- Förbättrad tillgänglighet för LinkLabel-kontrollen: Skärmläsaren meddelar det inaktiverade tillståndet för länken om motsvarande LinkLabel-kontroll är inaktiverad.
Förbättrat hjälpmedelsstöd för ProgressBar
- Aktiverat UI Automation-stöd för ProgressBar kontroll med möjlighet att använda UI Automation-meddelanden och andra UI Automation-funktioner. Utvecklare kan nu använda UI Automation-meddelanden som Skärmläsaren kan tillkännage för att visa förloppet. En översikt över UI Automation-händelser, inklusive meddelandehändelser för användargränssnittsautomatisering, finns i Översikt över UI Automation-händelser.
Förbättrat stöd för tillgänglighet i PropertyGrid
- Aktiverat UI Automation-stöd för PropertyGrid kontroll, med möjlighet att använda UI Automation-meddelanden och andra UI Automation-funktioner.
- UI Automation-elementet som motsvarar den egenskap som redigeras för närvarande är nu ett underområde till det motsvarande UI Automation-elementet för egenskapsobjektet.
- Egenskapselementet UI Automation är nu underordnat motsvarande kategorielement om den överordnade PropertyGrid kontrollen är inställd på kategorivyn.
Förbättrat ToolStrip-stöd
- Aktiverat UI Automation-stöd för ToolStrip kontroll, med möjlighet att använda UI Automation-meddelanden och andra UI Automation-funktioner.
- Förbättrad navigering via ToolStrip objekt.
- I objektläge försvinner inte Skärmläsarens fokus och går inte till dolda objekt.
Förbättrade visuella signaler
- En tom CheckedListBox kontroll visar nu en fokusindikator när den får fokus. Obs! Stöd för gränssnittsautomatisering är aktiverat för kontroller under körning men används inte under designtiden. En översikt över automatisering av användargränssnittet finns i översikten över UI Automation.
Anropa kontrollernas verktygstips med tangentbordet
- Verktygstips för kontroll kan nu anropas genom att fokusera kontrollen med tangentbordet. Den här funktionen måste aktiveras explicit för programmet (se avsnittet "Så här väljer du in eller ut från dessa ändringar")
| Namn | Värde |
|---|---|
| Omfattning | Huvudsaklig |
| Utgåva | 4.8 |
| Typ | Omriktning |
Windows Presentation Foundation (WPF)
Hjälpmedelsförbättringar i WPF
Detaljer
Högkontrastförbättringar
- Fokus för Expander kontrollen är nu synligt. I tidigare versioner av .NET Framework var det inte det.
- Texten i CheckBox och RadioButton kontroller när de väljs är nu lättare att se än i tidigare .NET Framework-versioner.
- Kantlinjen för en inaktiverad ComboBox har nu samma färg som den inaktiverade texten. I tidigare versioner av .NET Framework var det inte det.
- Inaktiverade och fokuserade knappar använder nu rätt temafärg. I tidigare versioner av .NET Framework gjorde de inte det.
- Listruteknappen visas nu när en ComboBox-kontrolls stil är inställd på ToolBar.ComboBoxStyleKey. I tidigare versioner av .NET Framework var det inte det.
- Sorteringsindikatorpilen i en DataGrid kontroll använder nu temafärger. I tidigare versioner av .NET Framework gjorde det inte det.
- Standardformatet för hyperlänkar ändras nu till rätt temafärg vid muspekaren. I tidigare versioner av .NET Framework gjorde det inte det.
- Nu är tangentbordsfokus på alternativknappar synligt. I tidigare versioner av .NET Framework var det inte det.
- Kolumnen för kryssrutan i DataGrid-kontrollen använder nu de förväntade färgerna för feedback om tangentbordsfokus. I tidigare versioner av .NET Framework gjorde det inte det.
- De visuella objekten för tangentbordsfokus visas nu på ComboBox och ListBox kontroller. I tidigare versioner av .NET Framework var det inte det.
Förbättringar av interaktion för skärmläsare
- Expander kontrollerna meddelas nu korrekt som grupper (fälls ut/fälls ihop) av skärmläsare.
- DataGridCell kontroller meddelas nu korrekt som datarutnätcell (lokaliserad) av skärmläsare.
- Skärmläsare meddelar nu namnet på en redigerbar ComboBox.
- PasswordBox kontroller meddelas inte längre som "inget objekt i vyn" av skärmläsare.
LiveRegion-stöd
Skärmläsare, till exempel Skärmläsaren, hjälper människor att förstå användargränssnittet (UI) för ett program, vanligtvis genom att beskriva användargränssnittselementet som för närvarande har fokus. Men om ett gränssnittselement ändras någonstans på skärmen och det inte har fokus kanske användaren inte informeras och missar viktig information. LiveRegions är avsedda att lösa det här problemet. En utvecklare kan använda dem för att informera skärmläsaren eller andra UI Automation-klienten om att en viktig ändring har gjorts i ett användargränssnittselement. Skärmläsaren kan sedan bestämma hur och när användaren ska informeras om ändringen. Egenskapen LiveSetting låter också skärmläsaren veta hur viktigt det är att informera användaren om ändringen i användargränssnittet.
Förslag
Så här väljer du in eller ut dessa ändringar
För att programmet ska kunna dra nytta av dessa ändringar måste det köras på .NET Framework 4.7.1 eller senare. Programmet kan dra nytta av dessa ändringar på något av följande sätt:
Mål för .NET Framework 4.7.1. Det här är den rekommenderade metoden. Dessa hjälpmedelsändringar aktiveras som standard i WPF-program som är avsedda för .NET Framework 4.7.1 eller senare.
Väljer bort äldre åtkomstbarhetsbeteenden genom att lägga till följande AppContext Switch- i avsnittet
<runtime>i appkonfigurationsfilen och ställa in den påfalse, vilket visas i följande exempel.<?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>
Program som riktar in sig på .NET Framework 4.7.1 eller senare och vill bevara det äldre hjälpmedelsbeteendet kan välja att använda äldre hjälpmedelsfunktioner genom att uttryckligen ange den här AppContext-växeln till true.
En översikt över UI Automation finns i UI Automation Overview.
| Namn | Värde |
|---|---|
| Omfattning | Huvudsaklig |
| Utgåva | 4.7.1 |
| Typ | Omriktning |
Berörda API:er
- AutomationElementIdentifiers.LiveSettingProperty
- AutomationElementIdentifiers.LiveRegionChangedEvent
- System.Windows.Automation.AutomationLiveSetting
- AutomationProperties.LiveSettingProperty
- AutomationProperties.SetLiveSetting(DependencyObject, AutomationLiveSetting)
- AutomationProperties.GetLiveSetting(DependencyObject)
- AutomationPeer.GetLiveSettingCore()
Lägg till den publika egenskapen "SelectionTextBrush" i TextBox/PasswordBox för urval utan "adorner"
Detaljer
I WPF-program som använder icke-utsmyckningsbaserad textmarkering för TextBox och PasswordBoxkan utvecklare nu ange den nyligen tillagda egenskapen SelectionTextBrush för att ändra återgivningen av den markerade texten. Som standard ändras den här färgen med HighlightTextBrushKey. Om textmarkering som inte är baserad på utsmyckning inte är aktiverad gör den här egenskapen ingenting.
Förslag
När icke-utsmyckningsbaserad textmarkering har aktiverats kan du använda egenskapen PasswordBox.SelectionTextBrush och SelectionTextBrush för att ändra utseendet på den markerade texten. Detta kan uppnås med hjälp av XAML:
<TextBox SelectionBrush="Red" SelectionTextBrush="White" SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
| Namn | Värde |
|---|---|
| Omfattning | Huvudsaklig |
| Utgåva | 4.8 |
| Typ | Omriktning |
Berörda API:er
- TextBoxBase.SelectionTextBrushProperty
- TextBoxBase.SelectionTextBrush
- System.Windows.Controls.TextBox
- System.Windows.Controls.PasswordBox
HwndHost ändrar nu korrekt storlek på barnfönster-HWND vid DPI-ändringar
Detaljer
I .NET Framework 4.7.2 och tidigare versioner, när WPF kördes i Per-Monitor Medvetet läge, har kontroller som finns i HwndHost inte storleksanpassats korrekt efter DPI-ändringar, till exempel när program flyttas från en övervakare till en annan. Den här korrigeringen säkerställer att värdbaserade kontroller har rätt storlek.
Förslag
För att programmet ska kunna dra nytta av dessa ändringar måste det köras på .NET Framework 4.7.2 eller senare, och det måste välja det här beteendet genom att ange följande AppContext Switch i avsnittet <runtime> i appkonfigurationsfilen för att false, som i följande exempel visas.
<?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>
| Namn | Värde |
|---|---|
| Omfattning | Huvudsaklig |
| Utgåva | 4.8 |
| Typ | Omriktning |
Windows Workflow Foundation (WF)
Hjälpmedelsförbättringar i WF-arbetsflödesdesignern (Windows Workflow Foundation)
Detaljer
Arbetsflödesdesignern för Windows Workflow Foundation (WF) förbättrar hur den fungerar med tillgänglighetstekniker. Dessa förbättringar omfattar följande ändringar:
- Tabbordningen ändras till vänster till höger och uppifrån och ned i vissa kontroller:
- Initiera korrelationsfönstret för att ange korrelationsdata för InitializeCorrelation-aktiviteten
- Innehållsdefinitionsfönstret för aktiviteterna Receive, Send, SendReplyoch ReceiveReply
- Fler funktioner är tillgängliga via tangentbordet:
- När du redigerar egenskaperna för en aktivitet kan egenskapsgrupperna minimeras med tangentbordet första gången de fokuseras.
- Varningsikoner är nu tillgängliga via tangentbord.
- Knappen Fler egenskaper i fönstret Egenskaper är nu tillgänglig via tangentbordet.
- Tangentbordsanvändare kan nu komma åt rubrikobjekten i fönstret Argument och variabler i arbetsflödesdesignern.
- Förbättrad synlighet för objekt med fokus, till exempel när:
- Att lägga till rader i rutnät som används av arbetsflödesdesigner och aktivitetsdesigner.
- Tabbning genom fält i aktiviteterna ReceiveReply och SendReply.
- Ange standardvärden för variabler eller argument
- Skärmläsare kan nu känna igen:
- Brytpunkter som angetts i arbetsflödesdesignern.
- Aktiviteterna FlowSwitch<T>, FlowDecisionoch CorrelationScope.
- Innehållet i Receive-aktiviteten.
- Måltypen för aktiviteten InvokeMethod.
- Kombinationsrutan Undantag och avsnittet Slutligen i aktiviteten TryCatch.
- Kombinationsrutan Meddelandetyp, delningen i fönstret Lägg till korrelationsinitierare, fönstret Innehållsdefinition och fönstret KorrelatesOn-definition i meddelandeaktiviteterna (Receive, Send, SendReplyoch ReceiveReply).
- Tillståndsdatorövergångar och övergångsmål.
- Anteckningar och kopplingar för FlowDecision-aktiviteter.
- Kontextmenyerna (högerklicka) för aktiviteter.
- Egenskapsvärderedigerarna, knappen Rensa sökning, knapparna Efter kategori och alfabetisk sortering och dialogrutan Uttrycksredigeraren i egenskapsrutnätet.
- Zoomprocenten i arbetsflödesdesignern.
- Avgränsaren i Parallel- och Pick-aktiviteterna.
- Aktivitet InvokeDelegate.
- Fönstret Välj typer för ordlisteaktiviteter (
Microsoft.Activities.AddToDictionary<TKey,TValue>,Microsoft.Activities.RemoveFromDictionary<TKey,TValue>osv.). - Fönstret Bläddra och välj .NET-typ.
- Brödsmulor i arbetsflödesdesignern.
- Användare som väljer högkontrasteman ser många förbättringar i synligheten för arbetsflödesdesignern och dess kontroller, till exempel bättre kontrastförhållande mellan element och mer märkbara markeringsrutor som används för fokuselement.
Förslag
Om du har ett program med en ny värdbaserad arbetsflödesdesigner kan ditt program dra nytta av dessa ändringar genom att utföra någon av följande åtgärder:
- Kompilera om programmet för att rikta in sig på .NET Framework 4.7.1. Dessa hjälpmedelsändringar är aktiverade som standard.
- Om ditt program är avsett för .NET Framework 4.7 eller tidigare men körs på .NET Framework 4.7.1 kan du välja bort dessa äldre hjälpmedelsbeteenden genom att lägga till följande AppContext-växel till avsnittet
<runtime>i app.config-filen och ställa in den påfalse, vilket visas i följande exempel.
<?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>
Program som riktar in sig på .NET Framework 4.7.1 eller senare och vill bevara det äldre hjälpmedelsbeteendet kan välja att använda äldre hjälpmedelsfunktioner genom att uttryckligen ange den här AppContext-växeln till true.
| Namn | Värde |
|---|---|
| Omfattning | Underårig |
| Utgåva | 4.7.1 |
| Typ | Omriktning |
XAML-kontrollsummor för arbetsflöden för symboler som ändrats från SHA1 till SHA256
Detaljer
För att stödja felsökning med Visual Studio genererar arbetsflödeskörningen en kontrollsumma för en XAML-arbetsflödesfil med hjälp av en hashalgoritm. I .NET Framework 4.6.2 och tidigare versioner använde hashning av arbetsflödeskontrollsummor MD5-algoritmen, vilket orsakade problem i FIPS-aktiverade system. Från och med .NET Framework 4.7 ändrades standardalgoritmen till SHA1. Från och med .NET Framework 4.8 ändrades standardalgoritmen till SHA256.
Förslag
Om koden inte kan läsa in arbetsflödesinstanser eller hitta lämpliga symboler på grund av ett kontrollsummafel kan du prova att ange AppContext switchen "Switch.System.Activities.UseSHA1HashForDebuggerSymbols" till true. I kod:
System.AppContext.SetSwitch("Switch.System.Activities.UseSHA1HashForDebuggerSymbols", true);
Eller i konfigurationsläget:
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
</runtime>
</configuration>
| Namn | Värde |
|---|---|
| Omfattning | Underårig |
| Utgåva | 4.8 |
| Typ | Omriktning |
Arbetsflödets XOML-definition och SqlTrackingService-cachenycklar har ändrats från MD5 till SHA256
Detaljer
Arbetsflödeskörningen i systemet behåller en cache med arbetsflödesdefinitioner som definierats i XOML. SqlTrackingService behåller också en cache som är nyckelad av strängar. Dessa cacheminnen är indexerade av värden som inkluderar kontrollsumma-hashvärde. I .NET Framework 4.7.2 och tidigare versioner använde den här kontrollsummehashningen MD5-algoritmen, vilket orsakade problem på FIPS-aktiverade system. Från och med .NET Framework 4.8 är den algoritm som används SHA256. Det bör inte finnas något kompatibilitetsproblem med den här ändringen eftersom värdena beräknas om varje gång arbetsflödeskörningen och SqlTrackingService startas. Vi har dock tillhandahållit egenheter som gör det möjligt för kunder att återgå till användningen av den äldre hashalgoritmen om det behövs.
Förslag
Om den här ändringen utgör ett problem när arbetsflöden körs kan du prova att ange en eller båda AppContext växlar:
- "Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey" till sant.
- Ställ in "Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey" till sant. I kod:
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey", true);
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey", true);
Eller i konfigurationsfilen (detta måste finnas i konfigurationsfilen för det program som skapar WorkflowRuntime-objektet):
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey=true" />
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKeytrue" />
</runtime>
</configuration>
| Namn | Värde |
|---|---|
| Omfattning | Underårig |
| Utgåva | 4.8 |
| Typ | Omriktning |
Arbetsflödets XOML-filkontrollsummor har ändrats från MD5 till SHA256
Detaljer
För att stödja felsökning av XOML-baserade arbetsflöden med Visual Studio, när arbetsflödesprojekt som innehåller XOML-filer skapas, inkluderas en kontrollsumma av innehållet i XOML-filen i koden som genereras som ett WorkflowMarkupSourceAttribute.MD5Digest värde. I .NET Framework 4.7.2 och tidigare versioner använde den här kontrollsummehashningen MD5-algoritmen, vilket orsakade problem på FIPS-aktiverade system. Från och med .NET Framework 4.8 är den algoritm som används SHA256. För att vara kompatibel med WorkflowMarkupSourceAttribute.MD5Digest används endast de första 16 byteen av den genererade kontrollsumman. Detta kan orsaka problem vid felsökning. Du kan behöva bygga om projektet.
Förslag
Om det inte löser problemet genom att återskapa projektet kan du prova att ange AppContext switchen "Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum" till true. I kod:
System.AppContext.SetSwitch("Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum", true);
Eller i en konfigurationsfil (detta måste finnas i MSBuild.exe.config för de MSBuild.exe som du använder):
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
| Namn | Värde |
|---|---|
| Omfattning | Underårig |
| Utgåva | 4.8 |
| Typ | Omriktning |
.NET Framework 4.8.1
Inga problem med appkompatibilitet introducerades i .NET Framework 4.8.1.