Sdílet prostřednictvím


Změna cílení migrace na rozhraní .NET Framework 4.8.x

Tento článek obsahuje seznam problémů s kompatibilitou aplikací, které byly zavedeny v rozhraní .NET Framework 4.8 a 4.8.1.

.NET Framework 4.8

Jádro

Spravované kryptografické třídy nevyvolají výjimku CryptographyException v režimu FIPS

Podrobnosti

V rozhraní .NET Framework 4.7.2 a starších verzích vyvolají spravované třídy zprostředkovatele kryptografických služeb, jako SHA256Managed, CryptographicException, když jsou kryptografické knihovny systému nakonfigurované v FIPS režimu. Tyto výjimky jsou vyvolány, protože spravované verze neprošly certifikací FIPS (Federal Information Processing Standards) 140-2 a blokují kryptografické algoritmy, které nebyly považovány za schválené na základě pravidel FIPS. Vzhledem k tomu, že několik vývojářů má své vývojové počítače v režimu FIPS, tyto výjimky jsou často vyvolány pouze v produkčních systémech. Aplikace, které cílí na rozhraní .NET Framework 4.8 a novější verze, se automaticky přepnou na novější, uvolněné zásady, takže v takových případech už CryptographicException nebude ve výchozím nastavení vyvolán. Místo toho spravované kryptografické třídy přesměrovávají kryptografické operace do systémové kryptografické knihovny. Tato změna zásad efektivně odstraňuje potenciálně matoucí rozdíl mezi vývojářskými prostředími a produkčními prostředími a zajišťuje, aby nativní komponenty a spravované komponenty fungovaly pod stejnými kryptografickými zásadami.

Návrh

Pokud je toto chování nežádoucí, můžete se z něj odhlásit a obnovit předchozí chování, aby CryptographicException byl vyvolán v režimu FIPS přidáním následujícího Nastavení konfigurace AppContextSwitchOverrides do <modulu runtime> konfiguračního souboru aplikace:

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

Pokud vaše aplikace cílí na rozhraní .NET Framework 4.7.2 nebo starší, můžete se k této změně přihlásit také přidáním následujících Nastavení konfigurace AppContextSwitchOverrides do části <> modulu runtime aplikace:

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Jméno Hodnota
Rozsah Edge
Verze 4.8
Typ Změna cílení

Ovlivněná rozhraní API

Windows Forms

Vylepšení přístupnosti v ovládacích prvcích Windows Forms pro .NET 4.8

Podrobnosti

Rozhraní Windows Forms Framework nadále vylepšuje, jak funguje s technologiemi přístupnosti, aby bylo možné lépe podporovat zákazníky modelu Windows Forms. Patří mezi ně následující změny:

  • Změny pro zlepšení zobrazení během režimu Vysoký kontrast.
  • Změny interakce s programem Předčítání
  • Změny v hierarchii přístupnosti (vylepšení navigace ve stromu automatizace uživatelského rozhraní)

Návrh

cs-CZ: Jak se přihlásit nebo odhlásit z těchto změn Aby aplikace mohla tyto změny využívat, musí běžet na rozhraní .NET Framework 4.8. Aplikace se může přihlásit k těmto změnám některým z následujících způsobů:

  • Je rekompilován tak, aby cílil na rozhraní .NET Framework 4.8. Tyto změny přístupnosti jsou ve výchozím nastavení povoleny v aplikacích Windows Forms, které cílí na rozhraní .NET Framework 4.8.
  • Cílí na rozhraní .NET Framework 4.7.2 nebo starší verzi a vypne starší chování přístupnosti přidáním následujícího přepínače AppContext do sekce <runtime> konfiguračního souboru aplikace a jeho nastavením na false, jak ukazuje následující příklad.
<?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>

Upozorňujeme, že pokud chcete vyjádřit výslovný souhlas s funkcemi přístupnosti přidanou v rozhraní .NET Framework 4.8, musíte se také přihlásit k funkcím přístupnosti rozhraní .NET Framework 4.7.1 a 4.7.2. Aplikace, které cílí na rozhraní .NET Framework 4.8 a chtějí zachovat starší chování přístupnosti, se můžou rozhodnout pro používání starších funkcí přístupnosti tím, že explicitně nastaví tento přepínač AppContext na true. Povolení podpory aktivace popisku klávesnice vyžaduje přidání řádku Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false do hodnoty AppContextSwitchOverrides:

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

Upozorňujeme, že povolení této funkce vyžaduje souhlas s výše uvedenými funkcemi přístupnosti rozhraní .NET Framework 4.7.1 – 4.8. Pokud není některá z funkcí přístupnosti aktivována, ale funkce zobrazení popisu je aktivována, při prvním pokusu o přístup k těmto funkcím dojde k chybě runtime NotSupportedException. Chybová zpráva naznačuje, že nástroje pro zobrazení klávesnice vyžadují vylepšení pro přístupnost na úrovni 3, aby byla povolena.

Použití barev definovaných operačním systémem v motivech s vysokým kontrastem

  • Vylepšili jsme motivy s vysokým kontrastem.

Vylepšená podpora Narratoru

vylepšená podpora přístupnosti CheckedListBox

  • Vylepšená podpora Předčítání pro ovládací prvek CheckedListBox. Když se přechází na ovládací prvek CheckedListBox pomocí klávesnice, Program Předčítání se zaměřuje na položku CheckedListBox a oznamuje ji.
  • Prázdný ovládací prvek CheckedListBox teď má obdélník zaostření nakreslený pro virtuální první položku, když se ovládací prvek dostane do zaostření.

Vylepšená podpora přístupnosti pro combobox

  • Podpora automatizace uživatelského rozhraní pro ovládací prvek ComboBox s možností používat oznámení automatizace uživatelského rozhraní a další funkce automatizace uživatelského rozhraní. vylepšená podpora přístupnosti DataGridView

  • Povolená podpora automatizace uživatelského rozhraní pro ovládací prvek DataGridView s možností využívat oznámení a další funkce automatizace uživatelského rozhraní.

  • Prvek automatizace UI, který odpovídá DataGridViewComboBoxEditingControl nebo DataGridViewTextBoxEditingControl, je nyní podřízeným prvkem příslušné buňky pro úpravy.

vylepšená podpora přístupnosti LinkLabel

  • Vylepšená přístupnost ovládacích prvků LinkLabel: Program Předčítání oznámí stav zakázání odkazu, pokud je odpovídající ovládací prvek LinkLabel zakázaný.

Vylepšená podpora přístupnosti ProgressBaru

  • Podpora automatizace uživatelského rozhraní pro ovládací prvek ProgressBar s možností používat oznámení automatizace uživatelského rozhraní a další funkce automatizace uživatelského rozhraní. Vývojáři teď můžou používat oznámení automatizace uživatelského rozhraní, která program Předčítání může oznamovat průběh. Přehled událostí automatizace uživatelského rozhraní, včetně událostí oznámení automatizace uživatelského rozhraní, najdete v přehledu událostí automatizace uživatelského rozhraní.

vylepšená podpora přístupnosti PropertyGridu

  • Podpora automatizace uživatelského rozhraní pro ovládací prvek PropertyGrid s možností používat oznámení automatizace uživatelského rozhraní a další funkce automatizace uživatelského rozhraní.
  • Prvek Automatizace uživatelského rozhraní, který odpovídá aktuálně upravované vlastnosti, je nyní podřízeným prvkem odpovídající vlastností položky Automatizace uživatelského rozhraní.
  • Prvek položky vlastnosti Automatizace uživatelského rozhraní je nyní podřízeným prvkem odpovídající kategorie, pokud je nadřazený PropertyGrid ovládací prvek nastaven na zobrazení kategorie.

vylepšená podpora ToolStrip

  • Podpora automatizace uživatelského rozhraní pro ovládací prvek ToolStrip s možností používat oznámení automatizace uživatelského rozhraní a další funkce automatizace uživatelského rozhraní.
  • Vylepšená navigace v položkách ToolStrip
  • Při režimu položek fokus Předčítání zůstává a nepřesune se na skryté položky.

vylepšené vizuální pomůcky

  • Prázdný ovládací prvek CheckedListBox nyní zobrazuje indikátor zaostření, když se na něj zaměříte. Poznámka: Podpora automatizace uživatelského rozhraní je povolena pro ovládací prvky za běhu, ale nepoužívá se v době návrhu. Přehled automatizace uživatelského rozhraní najdete v přehledu automatizace uživatelského rozhraní.

Vyvolání tooltipů ovládacích prvků pomocí klávesnice

  • Popis ovládacího prvku je teď možné vyvolat tak, že ovládací prvek zaměříte pomocí klávesnice. Tato funkce musí být pro aplikaci explicitně povolená (viz část Jak se odhlásit nebo odhlásit z těchto změn)
Jméno Hodnota
Rozsah Hlavní
Verze 4.8
Typ Změna cílení

Windows Presentation Foundation (WPF)

Vylepšení přístupnosti ve WPF

Podrobnosti

vylepšení vysokého kontrastu

  • Fokus ovládacího prvku Expander je teď viditelný. V předchozích verzích rozhraní .NET Framework to nebylo.
  • Text v ovládacích prvcích CheckBox a RadioButton při jejich výběru je teď přehlednější než v předchozích verzích rozhraní .NET Framework.
  • Ohraničení deaktivovaného ComboBox má nyní stejnou barvu jako deaktivovaný text. V předchozích verzích rozhraní .NET Framework to nebylo.
  • Zakázaná a prioritní tlačítka teď používají správnou barvu motivu. V předchozích verzích rozhraní .NET Framework tomu tak nebylo.
  • Tlačítko rozevíracího seznamu je nyní viditelné, když je styl ovládacího prvku ComboBox nastaven na ToolBar.ComboBoxStyleKey. V předchozích verzích rozhraní .NET Framework to nebylo.
  • Šipka indikátoru řazení v ovládacím prvku DataGrid teď používá barvy motivu. V předchozích verzích rozhraní .NET Framework to nebylo.
  • Výchozí styl hypertextového odkazu se nyní při přejetí myší změní na správnou barvu schématu. V předchozích verzích rozhraní .NET Framework to nebylo.
  • Fokus klávesnice na tlačítka přepínačů je nyní viditelný. V předchozích verzích rozhraní .NET Framework to nebylo.
  • Sloupec zaškrtávacího políčka ovládacího prvku DataGrid teď používá očekávané barvy pro zpětnou vazbu fokusu klávesnice. V předchozích verzích rozhraní .NET Framework to nebylo.
  • Vizuály fokusu klávesnice jsou teď viditelné na ovládacích prvcích ComboBox a ListBox. V předchozích verzích rozhraní .NET Framework to nebylo.

Vylepšení interakcí čtečky obrazovky

  • Expander ovládací prvky jsou teď správně oznámeny čtečkou obrazovky jako skupiny (rozbalující/zabalující se).
  • DataGridCell ovládací prvky teď čtečky obrazovky správně oznamují jako lokalizovanou buňku datové mřížky.
  • Čtečky obrazovky nyní budou ohlašovat název upravitelného ComboBox.
  • PasswordBox už čtečky obrazovky nehlásí jako „žádná položka v zobrazení“.

podpora LiveRegion

Čtečky obrazovky, jako je „Předčítání“, pomáhají lidem pochopit uživatelské rozhraní aplikace, obvykle popisem prvku uživatelského rozhraní, který je aktuálně ve fokusu. Pokud se ale někde na obrazovce změní prvek uživatelského rozhraní a nemá fokus, uživatel nemusí být informován a může zmeškat důležité informace. LiveRegions mají tento problém vyřešit. Vývojář je může použít, aby informoval čtečku obrazovky nebo jakéhokoli jiného automatizace uživatelského rozhraní klienta, že byla provedena důležitá změna prvku uživatelského rozhraní. Čtečka obrazovky pak může rozhodnout, jak a kdy uživatele o této změně informovat. Vlastnost LiveSetting také umožňuje čtečkě obrazovky vědět, jak důležité je informovat uživatele o změně provedené v uživatelském rozhraní.

Návrh

Jak se přihlásit nebo odhlásit z těchto změn

Aby aplikace mohla tyto změny využívat, musí běžet v rozhraní .NET Framework 4.7.1 nebo novějším. Aplikace může využívat tyto změny jedním z následujících způsobů:

  • Zaměřte se na .NET Framework 4.7.1 Toto je doporučený přístup. Tyto změny přístupnosti jsou ve výchozím nastavení povolené u aplikací WPF, které cílí na rozhraní .NET Framework 4.7.1 nebo novější.

  • Vyskočí z dřívějšího chování přístupnosti přidáním tohoto AppContext Switch v části <runtime> konfiguračního souboru aplikace a nastavením na false, jak ukazuje následující příklad.

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

Aplikace, které cílí na rozhraní .NET Framework 4.7.1 nebo novější a chtějí zachovat starší chování přístupnosti, se můžou přihlásit k používání starších funkcí přístupnosti explicitním nastavením tohoto přepínače AppContext na true. Přehled automatizace uživatelského rozhraní najdete v tématu Přehled automatizace uživatelského rozhraní.

Jméno Hodnota
Rozsah Major
Verze 4.7.1
Typ Změna cílení

Ovlivněná rozhraní API

Přidejte veřejnou vlastnost SelectionTextBrush k výběru bez ornamentu v textovém poli nebo PasswordBoxu.

Podrobnosti

V aplikacích WPF používajících výběr textu, který není založený na adorneru, pro TextBox a PasswordBoxmohou vývojáři nyní nastavit nově přidanou vlastnost SelectionTextBrush, aby změnili vykreslování vybraného textu. Ve výchozím nastavení se tato barva změní pomocí HighlightTextBrushKey. Pokud není povolen výběr textu založený na adorneru, tato vlastnost nemá žádný efekt.

Návrh

Po povolení výběru textu, který není založený na adorneru, můžete pomocí PasswordBox.SelectionTextBrush a SelectionTextBrush vlastnosti změnit vzhled vybraného textu. Toho lze dosáhnout pomocí XAML:

<TextBox SelectionBrush="Red" SelectionTextBrush="White"  SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
Jméno Hodnota
Rozsah Major
Verze 4.8
Typ Změna cílení

Ovlivněná rozhraní API

HwndHost nyní správně mění velikost child-HWND během změn DPI

Podrobnosti

V rozhraní .NET Framework 4.7.2 a starších verzích při spuštění WPF v režimu s podporou Per-Monitor nebyly ovládací prvky hostované v rámci HwndHost správně dimenzovány po změnách DPI, například při přesouvání aplikací z jednoho monitoru do druhého. Tato oprava zajišťuje, že hostované ovládací prvky mají správnou velikost.

Návrh

Aby aplikace mohla tyto změny využívat, musí běžet v rozhraní .NET Framework 4.7.2 nebo novějším a musí toto chování povolit nastavením následujícího přepínače AppContext v v části <runtime> konfiguračního souboru aplikace na false, jak následující příklad ukazuje.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/>
</startup>
<runtime>
<!-- AppContextSwitchOverrides value attribute is in the form of &#39;key1=true/false;key2=true/false  -->
<AppContextSwitchOverrides value="Switch.System.Windows.DoNotUsePresentationDpiCapabilityTier2OrGreater=false" />
</runtime>
</configuration>
Jméno Hodnota
Rozsah Major
Verze 4.8
Typ Změna cílení

Windows Workflow Foundation (WF)

Vylepšení přístupnosti v návrháři pracovních postupů Windows Workflow Foundation (WF)

Podrobnosti

Návrhář pracovních postupů Windows Workflow Foundation (WF) vylepšuje, jak funguje s technologiemi přístupnosti. Mezi tato vylepšení patří následující změny:

  • Pořadí ovládacích prvků se změní na zleva doprava a shora dolů v některých ovládacích prvcích:
  • Okno inicializace korelace pro nastavení dat korelace pro aktivitu InitializeCorrelation
  • Okno definice obsahu pro aktivity Receive, Send, SendReplya ReceiveReply
  • Další funkce jsou k dispozici prostřednictvím klávesnice:
  • Při úpravách vlastností aktivity je možné skupiny vlastností sbalit pomocí klávesnice při prvním zaměření.
  • Ikony upozornění jsou teď přístupné pomocí klávesnice.
  • Tlačítko Další vlastnosti v okně Vlastnosti je nyní přístupné pomocí klávesnice.
  • Uživatelé klávesnice teď mají přístup k položkám záhlaví v podoknech Argumenty a proměnné návrháře pracovního postupu.
  • Lepší viditelnost položek s fokusem, například v těchto případech:
  • Přidání řádků do datových mřížek používaných návrhářem pracovního postupu a návrháři aktivit
  • Procházení pomocí tabulátoru v aktivitách ReceiveReply a SendReply
  • Nastavení výchozích hodnot pro proměnné nebo argumenty
  • Čtečky obrazovky nyní dokážou správně rozpoznat:
  • Zarážky nastavené v návrháři pracovního postupu
  • Aktivity FlowSwitch<T>, FlowDecisiona CorrelationScope.
  • Obsah aktivity Receive.
  • Typ cíle pro aktivitu InvokeMethod.
  • Kombinované pole Výjimka a sekce Konečně v aktivitě TryCatch.
  • Pole se seznamem Typ zprávy, rozdělovač v okně Přidat inicializátory korelace, okno Definice obsahu a okno Definice CorrelatesOn v aktivitách zasílání zpráv (Receive, Send, SendReplya ReceiveReply).
  • Přechody a cíle přechodů stavových počítačů
  • Poznámky a konektory týkající se aktivit FlowDecision
  • Kontextové nabídky (po kliknutí pravým tlačítkem myši) pro aktivity
  • Editory hodnot vlastností, tlačítko Vymazat hledání, tlačítka pro řazení podle kategorie a abecedy a dialogové okno Editor výrazů v mřížce vlastností.
  • Procento přiblížení v Návrháři pracovního postupu
  • Oddělovač v aktivitách Parallel a Pick.
  • Aktivita InvokeDelegate.
  • Okno Výběr typů pro aktivity slovníku (Microsoft.Activities.AddToDictionary<TKey,TValue>, Microsoft.Activities.RemoveFromDictionary<TKey,TValue>atd.).
  • Okno Procházet a vybrat typ rozhraní .NET.
  • Navigační prvky v Návrháři pracovního postupu
  • Uživatelé, kteří zvolí motivy s vysokým kontrastem, uvidí mnoho vylepšení viditelnosti Návrháře pracovního postupu a jeho ovládacích prvků, jako jsou lepší kontrastní poměry mezi prvky a znatelnými poli výběru používanými pro prvky fokusu.

Návrh

Pokud máte aplikaci s znovu hostovaným návrhářem pracovního postupu, může vaše aplikace využívat tyto změny provedením některé z těchto akcí:

  • Překompilujte aplikaci tak, aby cílila na rozhraní .NET Framework 4.7.1. Tyto změny přístupnosti jsou ve výchozím nastavení povolené.
  • Pokud vaše aplikace cílí na rozhraní .NET Framework 4.7 nebo starší, ale běží na rozhraní .NET Framework 4.7.1, můžete se odhlásit z těchto starších chování přístupnosti přidáním následujícího AppContext přepnout do části <runtime> souboru app.config a nastavit ho na false, jak ukazuje následující příklad.
<?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>

Aplikace, které cílí na rozhraní .NET Framework 4.7.1 nebo novější a chtějí zachovat starší chování přístupnosti, se můžou přihlásit k používání starších funkcí přístupnosti explicitním nastavením tohoto přepínače AppContext na true.

Jméno Hodnota
Rozsah Menší
Verze 4.7.1
Typ Změna cílení

Kontrolní součty XAML pracovního postupu pro symboly změněné z SHA1 na SHA256

Podrobnosti

Pro podporu ladění v sadě Visual Studio běhové prostředí pracovního postupu generuje kontrolní součet pro soubor XAML pracovního postupu pomocí hashovacího algoritmu. V rozhraní .NET Framework 4.6.2 a starších verzích byl pro kontrolní součet pracovního postupu použit algoritmus MD5, který způsoboval problémy na systémech s povoleným FIPS. Počínaje rozhraním .NET Framework 4.7 se výchozí algoritmus změnil na SHA1. Počínaje rozhraním .NET Framework 4.8 se výchozí algoritmus změnil na SHA256.

Návrh

Pokud váš kód nemůže načíst instance pracovního postupu nebo najít odpovídající symboly kvůli selhání kontrolního součtu, zkuste AppContext přepnout přepínač Switch.System.Activities.UseSHA1HashForDebuggerSymbols na true. V kódu:

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

Nebo v sekci konfigurace:

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
  </runtime>
</configuration>
Jméno Hodnota
Rozsah Drobné
Verze 4.8
Typ Změna cílení

Definice XOML pracovního postupu a klíče mezipaměti SqlTrackingService se změnily z MD5 na SHA256

Podrobnosti

Modul runtime pracovního postupu uchovává mezipaměť definic pracovních postupů definovaných v XOML. SqlTrackingService také uchovává mezipaměť, která používá klíče z řetězců. Tyto mezipaměti jsou klíčovány hodnotami, které zahrnují hodnotu hash kontrolního součtu. V rozhraní .NET Framework 4.7.2 a starších verzích používal tento kontrolní součet algoritmus hashování MD5, který způsoboval problémy se systémy s podporou FIPS. Počínaje rozhraním .NET Framework 4.8 je použitý algoritmus SHA256. Při této změně by neměl být problém s kompatibilitou, protože hodnoty se přepočítávají při každém spuštění modulu runtime pracovního postupu a služby SqlTrackingService. Poskytli jsme ale výjimky, aby zákazníci mohli v případě potřeby vrátit k použití původního algoritmu hash.

Návrh

Pokud tato změna při provádění pracovních postupů představuje problém, zkuste nastavit jeden nebo oba přepínače AppContext:

  • Nastavte "System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey" na hodnotu true.
  • Nastavte přepínač System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey na hodnotu true. V kódu:
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey", true);
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey", true);

Nebo v konfiguračním souboru (to musí být v konfiguračním souboru pro aplikaci, která vytváří objekt WorkflowRuntime):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey=true" />
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKeytrue" />
</runtime>
</configuration>
Jméno Hodnota
Rozsah Drobné
Verze 4.8
Typ Změna cílení

Kontrolní součty XOML souborů pracovního postupu byly změněny z MD5 na SHA256.

Podrobnosti

Pokud chcete podporovat ladění pracovních postupů založených na XOML pomocí sady Visual Studio, při vytváření projektů pracovních postupů obsahujících soubory XOML se do kódu vygenerovaného jako hodnota WorkflowMarkupSourceAttribute.MD5Digest zahrne kontrolní součet obsahu souboru XOML. V rozhraní .NET Framework 4.7.2 a starších verzích používal kontrolní součet algoritmus MD5, což způsobovalo problémy se systémy s podporou FIPS. Počínaje rozhraním .NET Framework 4.8 je použitý algoritmus SHA256. Pro kompatibilitu s WorkflowMarkupSourceAttribute.MD5Digest se použije pouze prvních 16 bajtů vygenerovaného kontrolního součtu. To může způsobit problémy během ladění. Možná budete muset projekt znovu sestavit.

Návrh

Pokud opětovné sestavení projektu problém nevyřeší, zkuste nastavit přepínač AppContext Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum na hodnotu true. V kódu:

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

Nebo v konfiguračním souboru (to musí být v MSBuild.exe.config pro MSBuild.exe, které používáte):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
Jméno Hodnota
Rozsah Drobné
Verze 4.8
Typ Změna cílení

.NET Framework 4.8.1

V rozhraní .NET Framework 4.8.1 nebyly zavedeny žádné problémy s kompatibilitou aplikací.