Ommåla ändringar för migrering till .NET Framework 4.8.x
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
Details
I .NET Framework 4.7.2 och tidigare versioner konfigureras hanterade kryptografiska providerklasser, till exempel SHA256Managed när CryptographicException 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 ett CryptographicException utlöses i FIPS-läge genom att lägga till följande Konfigurationsinställning för AppContextSwitchOverrides i körningsavsnittet>< 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 Konfigurationsinställning för AppContextSwitchOverrides i körningsavsnittet>< i programkonfigurationsfilen:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Name | Värde |
---|---|
Omfång | Edge |
Version | 4.8 |
Typ | Ommåla |
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 Forms
Hjälpmedelsförbättringar i Windows Forms-kontroller för .NET 4.8
Details
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 från 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 till .NET Framework 4.7.2 eller tidigare version och avregistrerar sig från äldre hjälpmedelsbeteenden genom att lägga till följande AppContext-växel i
<runtime>
avsnittet i appkonfigurationsfilen och ställa in 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 äldre hjälpmedelsbeteendet kan välja att använda äldre hjälpmedelsfunktioner genom att uttryckligen ange den här AppContext-växeln till true
. Om du aktiverar stöd för knappbeskrivningsanrop måste du lägga Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false
till raden i värdet 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 anmälda, men funktion för knappbeskrivningsvisning har valts, utlöses en körning NotSupportedException vid den första åtkomsten till dessa funktioner. Undantagsmeddelandet anger att knappbeskrivningar kräver hjälpmedelsförbättringar på nivå 3 för att aktiveras.
Användning av OS-definierade färger i högkontrastteman
- Förbättrade högkontrasteman.
Förbättrat stöd för Skärmläsaren
- Skärmläsaren meddelar nu sorteringsriktningen DataGridViewColumn för när ett tillgängligt namn på en DataGridViewCell.
Förbättrat stöd för CheckedListBox-hjälpmedel
- Förbättrat skärmläsarestöd CheckedListBox för kontrollen. När du navigerar till CheckedListBox kontrollen med tangentbordet fokuserar Skärmläsaren 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 ComboBox
Aktiverat stöd för UI Automation för ComboBox kontrollen, med möjlighet att använda UI Automation-meddelanden och andra UI Automation-funktioner. Förbättrat hjälpmedelsstö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 eller DataGridViewTextBoxEditingControl är nu underordnat DataGridViewComboBoxEditingControl motsvarande redigeringscell.
Förbättrat hjälpmedelsstöd för LinkLabel
- Förbättrad LinkLabel kontrolltillgänglighet: Skärmläsaren meddelar inaktiverat tillstånd för länken om motsvarande LinkLabel kontroll är inaktiverad.
Förbättrat hjälpmedelsstöd för ProgressBar
- Aktiverat stöd för UI Automation för ProgressBar kontrollen med möjlighet att använda UI Automation-meddelanden och andra funktioner för UI Automation. Utvecklare kan nu använda UI Automation-meddelanden som Skärmläsaren kan meddela för att indikera 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 hjälpmedelsstöd för PropertyGrid
- Aktiverat stöd för UI Automation för PropertyGrid kontrollen, med möjlighet att använda UI Automation-meddelanden och andra UI Automation-funktioner.
- UI Automation-elementet som motsvarar den aktuella redigerade egenskapen är nu underordnat motsvarande UI Automation-element för egenskapsobjektet.
- Elementet UI Automation-egenskapsobjekt är nu underordnat motsvarande kategorielement om den överordnade PropertyGrid kontrollen är inställd på kategorivyn.
Förbättrat ToolStrip-stöd
- Aktiverat stöd för UI Automation för ToolStrip kontrollen, 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 tips
- 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 kontrollers knappbeskrivningar med tangentbord
- Knappbeskrivning för kontroll kan nu anropas genom att du fokuserar 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 ur dessa ändringar")
Name | Värde |
---|---|
Omfång | Huvudversion |
Version | 4.8 |
Typ | Ommåla |
Windows Presentation Foundation (WPF)
Hjälpmedelsförbättringar i WPF
Details
Förbättringar av högkontrast
- Kontrollens Expander fokus är nu synligt. I tidigare versioner av .NET Framework var det inte det.
- Texten i CheckBox och RadioButton kontrollerna när de väljs är nu lättare att se än i tidigare .NET Framework-versioner.
- Kantlinjen för en inaktiverad ComboBox är 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 format är inställt 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.
- Tangentbordsfokus på alternativknappar är nu synligt. I tidigare versioner av .NET Framework var det inte det.
- Kontrollens DataGrid kryssruta 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 är nu synliga på ComboBox och ListBox kontroller. I tidigare versioner av .NET Framework var det inte det.
Förbättringar av interaktion med skärmläsare
- Expander kontroller meddelas nu korrekt som grupper (expandera/dölj) 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 inte längre visas som "inget objekt i vyn" av skärmläsare.
Stöd för LiveRegion
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 någon annan UI Automation-klient 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 från 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. Detta ä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.
Den avregistrerar sig från äldre hjälpmedelsbeteenden genom att lägga till följande AppContext-växel i avsnittet i
<runtime>
appkonfigurationsfilen och ställa in den på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.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 automatisering av användargränssnittet finns i Översikt över användargränssnittsautomation.
Name | Värde |
---|---|
Omfång | Huvudversion |
Version | 4.7.1 |
Typ | Ommåla |
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 offentliga egenskapen SelectionTextBrush i TextBox/PasswordBox non-adorner selection
Details
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 icke-utsmyckningsbaserad textmarkering inte är aktiverad gör den här egenskapen ingenting.
Förslag
När icke-utsmyckningsbaserad textmarkering har aktiverats kan du använda PasswordBox.SelectionTextBrush egenskapen 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>
Name | Värde |
---|---|
Omfång | Huvudversion |
Version | 4.8 |
Typ | Ommåla |
Berörda API:er
- TextBoxBase.SelectionTextBrushProperty
- TextBoxBase.SelectionTextBrush
- System.Windows.Controls.TextBox
- System.Windows.Controls.PasswordBox
HwndHost ändrar nu storlek på underordnad HWND vid DPI-ändringar
Details
I .NET Framework 4.7.2 och tidigare versioner, när WPF kördes i läget Per-Monitor Aware, har kontrollerna 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 i <runtime>
appkonfigurationsfilen till 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.System.Windows.DoNotUsePresentationDpiCapabilityTier2OrGreater=false" />
</runtime>
</configuration>
Name | Värde |
---|---|
Omfång | Huvudversion |
Version | 4.8 |
Typ | Ommåla |
Windows Workflow Foundation (WF)
Hjälpmedelsförbättringar i WF-arbetsflödesdesignern (Windows Workflow Foundation)
Details
Arbetsflödesdesignern för Windows Workflow Foundation (WF) förbättrar hur den fungerar med hjälpmedelstekniker. 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
- Fönstret innehållsdefinition för aktiviteterna Receive, Send, SendReplyoch ReceiveReply
- Fler funktioner är tillgängliga via tangentbordet:
- När du redigerar egenskaperna för en aktivitet kan egenskapsgrupper minimeras av tangentbordet första gången de fokuserar.
- Varningsikoner är nu tillgängliga via tangentbord.
- Knappen Fler egenskaper i Fönstret Egenskaper är nu tillgänglig via tangentbord.
- 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:
- Lägga till rader i datarutnät som används av arbetsflödesdesignern och aktivitetsdesigners.
- Tabbing 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 InvokeMethod aktiviteten.
- Kombinationsrutan Undantag och avsnittet Slutligen i TryCatch aktiviteten.
- Kombinationsrutan Meddelandetyp, splittern i fönstret Lägg till korrelationsinitierare, fönstret Innehållsdefinition och fönstret KorrelatesOn Defintion i meddelandeaktiviteterna (Receive, Send, SendReplyoch ReceiveReply).
- Tillståndsdatorövergångar och övergångsmål.
- Anteckningar och anslutningsappar 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 aktiviteter.
- Aktiviteten 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.
- Sökvägar 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 i
<runtime>
avsnittet i filen app.config och ställa in 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" />
</runtime>
</configuration>
Program som är inriktade 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
.
Name | Värde |
---|---|
Omfång | Mindre |
Version | 4.7.1 |
Typ | Ommåla |
XAML-kontrollsummor för arbetsflöden för symboler som ändrats från SHA1 till SHA256
Details
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 växeln AppContext
"Switch.System.Activities.UseSHA1HashForDebuggerSymbols" till true
. I kod:
System.AppContext.SetSwitch("Switch.System.Activities.UseSHA1HashForDebuggerSymbols", true);
Eller i konfiguration:
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
</runtime>
</configuration>
Name | Värde |
---|---|
Omfång | Mindre |
Version | 4.8 |
Typ | Ommåla |
Arbetsflödets XOML-definition och SqlTrackingService-cachenycklar har ändrats från MD5 till SHA256
Details
Arbetsflödeskörningen i 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 styrs av värden som innehåller checksummors hash-värde. I .NET Framework 4.7.2 och tidigare versioner använde den här kontrollsummans hashning MD5-algoritmen, vilket orsakade problem i 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 växlarna AppContext
:
- "Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey" till true.
- "Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey" till true. 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>
Name | Värde |
---|---|
Omfång | Mindre |
Version | 4.8 |
Typ | Ommåla |
Arbetsflödets XOML-filkontrollsummor har ändrats från MD5 till SHA256
Details
För att stödja felsökning av XOML-baserade arbetsflöden med Visual Studio ingår en kontrollsumma av innehållet i XOML-filen i koden som genereras som ett WorkflowMarkupSourceAttribute.MD5Digest värde när arbetsflödesprojekt som innehåller XOML-filer skapas. I .NET Framework 4.7.2 och tidigare versioner använde den här kontrollsummans hashning MD5-algoritmen, vilket orsakade problem i 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 switchen AppContext
"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 MSBuild.exe som du använder):
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
Name | Värde |
---|---|
Omfång | Mindre |
Version | 4.8 |
Typ | Ommåla |
.NET Framework 4.8.1
Inga problem med appkompatibilitet introducerades i .NET Framework 4.8.1.