Freigeben über


Neuzuweisungsänderungen für die Migration zu .NET Framework 4.8.x

In diesem Artikel werden die App-Kompatibilitätsprobleme aufgeführt, die in .NET Framework 4.8 und 4.8.1 eingeführt wurden.

.NET Framework 4.8

Kern

Verwaltete Kryptografieklassen lösen keine CryptographyException im FIPS-Modus aus

Einzelheiten

In .NET Framework 4.7.2 und früheren Versionen lösen verwaltete Kryptografieanbieterklassen wie SHA256Managed eine Ausnahme des Typs CryptographicException aus, wenn die kryptografischen Systembibliotheken im FIPS-Modus konfiguriert sind. Diese Ausnahmen werden ausgelöst, da die verwalteten Versionen keine FIPS-Zertifizierung (Federal Information Processing Standards) 140-2 durchlaufen haben, und um kryptografische Algorithmen zu blockieren, die nicht als genehmigt betrachtet wurden, basierend auf den FIPS-Regeln. Da nur wenige Entwickler ihre Entwicklungscomputer im FIPS-Modus haben, werden diese Ausnahmen häufig nur auf Produktionssystemen ausgelöst. Anwendungen, die auf .NET Framework 4.8 und höhere Versionen abzielen, wechseln automatisch zu der neueren, entspannten Richtlinie, sodass ein Standard CryptographicException in solchen Fällen nicht mehr ausgelöst wird. Stattdessen leiten die verwalteten Kryptografieklassen kryptografische Vorgänge an eine Systemkryptografiebibliothek um. Diese Richtlinienänderung entfernt effektiv einen potenziell verwirrenden Unterschied zwischen Entwicklerumgebungen und produktionsumgebungen und macht systemeigene Komponenten und verwaltete Komponenten unter derselben kryptografischen Richtlinie ausgeführt.

Vorschlag

Wenn dieses Verhalten nicht erwünscht ist, können Sie es deaktivieren und das vorherige Verhalten wiederherstellen, sodass ein CryptographicException Im FIPS-Modus ausgelöst wird, indem Sie die folgende Konfigurationseinstellung "AppContextSwitchOverrides " zum <Laufzeitabschnitt> Ihrer Anwendungskonfigurationsdatei hinzufügen:

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

Wenn Ihre Anwendung auf .NET Framework 4.7.2 oder früher ausgerichtet ist, können Sie sich auch für diese Änderung anmelden, indem Sie die folgende Konfigurationseinstellung für AppContextSwitchOverrides zum <Laufzeitabschnitt> Ihrer Anwendungskonfigurationsdatei hinzufügen:

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Name Wert
Umfang Rand
Version 4.8
Typ Neuausrichten

Betroffene APIs

Windows Forms

Verbesserungen der Barrierefreiheit in Windows Forms-Steuerelementen für .NET 4.8

Einzelheiten

Das Windows Forms Framework verbessert weiterhin die Funktionsweise mit Barrierefreiheitstechnologien, um Windows Forms-Kunden besser zu unterstützen. Dazu gehören die folgenden Änderungen:

  • Änderungen zur Verbesserung der Anzeige im Modus "Hoher Kontrast".
  • Änderungen an der Interaktion mit der Sprachausgabe.
  • Änderungen in der Hierarchie "Barrierefrei" (Verbessern der Navigation über die Benutzeroberflächenautomatisierungs-Struktur).

Vorschlag

So melden Sie sich für diese Änderungen an oder ab Damit die Anwendung von diesen Änderungen profitieren kann, muss sie auf dem .NET Framework 4.8 laufen. Die Anwendung kann sich für diese Änderungen auf eine der folgenden Arten entscheiden:

  • Es wird so neu kompiliert, dass es auf .NET Framework 4.8 ausgerichtet ist. Diese Barrierefreiheitsänderungen sind in Windows Forms-Anwendungen, die auf .NET Framework 4.8 abzielen, standardmäßig aktiviert.
  • Sie zielt auf das .NET Framework 4.7.2 oder eine frühere Version ab und verzichtet auf die veralteten Zugänglichkeitsverhalten, indem der folgende AppContext-Switch zum <runtime>-Abschnitt der App-Konfigurationsdatei hinzugefügt und auf false gesetzt wird, wie im folgenden Beispiel gezeigt.
<?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>

Beachten Sie, dass Sie sich auch für die in .NET Framework 4.8 hinzugefügten Barrierefreiheitsfeatures von .NET Framework 4.7.1 und 4.7.2 anmelden müssen. Anwendungen, die auf .NET Framework 4.8 abzielen und das ältere Barrierefreiheit-Verhalten beibehalten möchten, können sich für die Verwendung von veralteten Barrierefreiheitsfunktionen entscheiden, indem sie diesen AppContext-Switch explizit auf true setzen. Um die Unterstützung für die Tastatur-ToolTip-Aufruf zu aktivieren, müssen Sie die Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false-Zeile zum AppContextSwitchOverrides-Wert hinzufügen.

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

Beachten Sie, dass für die Aktivierung dieses Features die Barrierefreiheitsfeatures von .NET Framework 4.7.1 - 4.8 aktiviert werden müssen. Wenn eine der Barrierefreiheitsfunktionen nicht aktiviert wurde, die Funktion für die Anzeige von QuickInfos jedoch aktiviert wurde, wird beim ersten Zugriff auf diese Funktion ein Laufzeit-NotSupportedException ausgelöst. Die Ausnahmemeldung gibt an, dass Tastatur-QuickInfos Verbesserungen der Barrierefreiheit von Ebene 3 erfordern, damit sie aktiviert werden können.

Verwendung von durch das Betriebssystem definierten Farben in Designs mit hohem Kontrast

  • Verbesserte Themen mit starkem Kontrast.

Verbesserte Unterstützung für die Sprachausgabe

Verbesserte Unterstützung der Barrierefreiheit von CheckedListBox

  • Verbesserte Unterstützung für die Sprachausgabe beim CheckedListBox-Steuerelement Beim Navigieren zum CheckedListBox-Steuerelement mit der Tastatur konzentriert sich die Sprachausgabe auf das CheckedListBox-Element und kündigt es an.
  • Ein leeres CheckedListBox-Steuerelement verfügt jetzt über ein Fokusrechteck, das für ein virtuelles erstes Element gezeichnet wird, wenn das Steuerelement fokussiert wird.

Verbesserte Barrierefreiheit-Unterstützung für ComboBox

  • Die Unterstützung für die Benutzeroberflächenautomatisierung wurde für das ComboBox-Steuerelement mit der Möglichkeit aktiviert, Benachrichtigungen der Benutzeroberflächenautomatisierung und andere Funktionen der Benutzeroberflächenautomatisierung zu verwenden. Verbesserte Unterstützung der DataGridView-Barrierefreiheit

  • Die Unterstützung für die Benutzeroberflächenautomatisierung wurde für das DataGridView-Steuerelement mit der Möglichkeit aktiviert, Benachrichtigungen der Benutzeroberflächenautomatisierung und andere Funktionen der Benutzeroberflächenautomatisierung zu verwenden.

  • Das Element der Benutzeroberflächenautomatisierung, das DataGridViewComboBoxEditingControl oder DataGridViewTextBoxEditingControl entspricht, ist nun ein untergeordnetes Element der entsprechenden Bearbeitungszelle.

Verbesserte Barrierefreiheitsunterstützung für LinkLabel

  • Verbesserte LinkLabel Steuerungszugänglichkeit: Der Narrator gibt den deaktivierten Zustand des Links bekannt, wenn das entsprechende LinkLabel Steuerelement deaktiviert ist.

Verbesserte ProgressBar-Unterstützung für Barrierefreiheit

  • Aktivierte Unterstützung für die Benutzeroberflächenautomatisierung des ProgressBar-Steuerelements, mit der Möglichkeit, Benachrichtigungen und andere Automatisierungsfunktionen der Benutzeroberfläche zu verwenden. Entwickler können nun Benachrichtigungen zur Benutzeroberflächenautomatisierung verwenden, die von der Sprachausgabe zur Angabe des Status angekündigt werden können. Eine Übersicht über Benutzeroberflächenautomatisierungs-Ereignisse, einschließlich Benachrichtigungsereignissen zur Benutzeroberflächenautomatisierung, finden Sie in der Übersicht über Benutzeroberflächenautomatisierungsereignisse.

Verbesserte PropertyGrid-Barrierefreiheitsunterstützung

  • Die Unterstützung für die Benutzeroberflächenautomatisierung wurde für das PropertyGrid-Steuerelement mit der Möglichkeit aktiviert, Benachrichtigungen der Benutzeroberflächenautomatisierung und andere Funktionen der Benutzeroberflächenautomatisierung zu verwenden.
  • Das Element der Benutzeroberflächenautomatisierung, das der derzeit bearbeiteten Eigenschaft entspricht, ist nun ein untergeordnetes Element des entsprechenden Benutzeroberflächenautomatisierungselements des Eigenschaftselements.
  • Das Element der Benutzeroberflächenautomatisierung des Eigenschaftselements ist nun ein untergeordnetes Element des entsprechenden Kategorieelements, wenn das übergeordnete PropertyGrid-Steuerelement auf die Kategorieansicht festgelegt ist.

Verbesserte ToolStrip-Unterstützung

  • Die Unterstützung für die Benutzeroberflächenautomatisierung wurde für das ToolStrip-Steuerelement mit der Möglichkeit aktiviert, Benachrichtigungen der Benutzeroberflächenautomatisierung und andere Funktionen der Benutzeroberflächenautomatisierung zu verwenden.
  • Verbesserte Navigation durch ToolStrip-Elemente.
  • Im Elementmodus verschwindet der Fokus des Narrators nicht und wechselt nicht zu ausgeblendeten Elementen.

Verbesserte visuelle Hinweise

  • Ein leeres CheckedListBox Steuerelement zeigt jetzt eine Fokusanzeige an, wenn es den Fokus erhält. Hinweis: Die Unterstützung der Benutzeroberflächenautomatisierung ist für Steuerelemente in der Laufzeit aktiviert, wird aber nicht in der Entwurfszeit verwendet. Eine Übersicht über die Benutzeroberflächenautomatisierung finden Sie in der Übersicht über die Benutzeroberflächenautomatisierung.

Aufrufen der QuickInfos von Steuerelementen mit einer Tastatur

  • QuickInfos für Steuerelemente können nun durch Fokussieren des Steuerelements über die Tastatur aufgerufen werden. Dieses Feature muss explizit für die Anwendung aktiviert werden (siehe Abschnitt "Wie Sie diese Änderungen aktivieren oder deaktivieren")
Name Wert
Umfang Haupt
Version 4.8
Typ Neuausrichten

Windows Presentation Foundation (WPF)

Verbesserungen der Barrierefreiheit in WPF

Einzelheiten

Verbesserungen beim hohen Kontrast

  • Der Fokus für das Expander-Steuerelement wird nun angezeigt. In früheren Versionen von .NET Framework war es nicht möglich.
  • Der Text in CheckBox- und RadioButton-Steuerelementen, wenn sie ausgewählt werden, ist jetzt einfacher zu sehen als in früheren .NET Framework-Versionen.
  • Der Rahmen eines deaktivierten ComboBox-Elements hat nun die gleiche Farbe wie der deaktivierte Text. In früheren Versionen von .NET Framework war es nicht möglich.
  • Deaktivierte und fokussierte Schaltflächen verwenden jetzt die richtige Designfarbe. In früheren Versionen von .NET Framework wurde dies nicht getan.
  • Die Dropdownschaltfläche ist nun sichtbar, wenn der Stil eines ComboBox-Steuerelements auf ToolBar.ComboBoxStyleKey festgelegt ist. In früheren Versionen von .NET Framework war es nicht möglich.
  • Der Pfeil für die Sortieranzeige in einem DataGrid-Steuerelement verwendet nun die Farben des Designs. In früheren Versionen von .NET Framework wurde dies nicht getan.
  • Das Standardformat für Links ändert sich nun in das richtige Farbdesign, wenn mit der Maus darauf gezeigt wird. In früheren Versionen von .NET Framework wurde dies nicht getan.
  • Es wird nun angezeigt, wenn der Tastaturfokus sich auf Optionsfeldern befindet. In früheren Versionen von .NET Framework war es nicht möglich.
  • Die Spalte für Kontrollkästchen des DataGrid-Steuerelements verwendet nun die erwarteten Farben für das Feedback des Tastaturfokus. In früheren Versionen von .NET Framework wurde dies nicht getan.
  • Die visuellen Elemente des Tastaturfokus werden nun für ComboBox- und ListBox-Steuerelemente angezeigt. In früheren Versionen von .NET Framework war es nicht möglich.

Verbesserungen der Interaktion mit der Sprachausgabe

  • Expander-Steuerelemente werden von der Sprachausgabe nun richtig als Gruppen (erweitern/reduzieren) ausgegeben.
  • DataGridCell-Steuerelemente werden von der Sprachausgabe nun richtig als Datenrasterzellen (lokalisiert) ausgegeben.
  • Die Sprachausgabe gibt nun den Namen eines bearbeitbaren ComboBox-Elements aus.
  • PasswordBox-Steuerelemente werden von der Sprachausgabe nicht mehr als „Es befindet sich kein Element in der Ansicht“ ausgegeben.

LiveRegion-Unterstützung

Screenreader wie der Narrator helfen Personen, die Benutzeroberfläche einer Anwendung zu verstehen, in der Regel, indem sie das UI-Element beschreiben, das gerade den Fokus hat. Wenn sich jedoch ein UI-Element an einer beliebigen Stelle auf dem Bildschirm ändert und nicht im Fokus steht, wird der Benutzer möglicherweise nicht informiert und verpasst wichtige Informationen. LiveRegions sollen dieses Problem lösen. Entwickler können diese verwenden, um der Sprachausgabe oder einem anderen Benutzeroberflächen-Automatisierungsclient mitzuteilen, dass eine wichtige Änderung an einem Element der Benutzeroberfläche vorgenommen wurde. Das Bildschirmleseprogramm kann dann entscheiden, wie und wann der Benutzer über diese Änderung informiert werden soll. Die LiveSetting-Eigenschaft sorgt ebenfalls dafür, dass die Sprachausgabe den Benutzer über Änderungen an der Benutzeroberfläche informiert.

Vorschlag

Wie Sie diesen Änderungen zustimmen oder ablehnen

Damit die Anwendung von diesen Änderungen profitieren kann, muss sie auf .NET Framework 4.7.1 oder höher ausgeführt werden. Die Anwendung kann von diesen Änderungen auf eine der folgenden Arten profitieren:

  • Auf .NET Framework 4.7.1 abzielen. Dies ist der empfohlene Ansatz. Diese Barrierefreiheitsänderungen sind standardmäßig für WPF-Anwendungen aktiviert, die auf .NET Framework 4.7.1 oder höher abzielen.

  • Veraltete Verhaltensweisen der Barrierefreiheit werden deaktiviert, indem wie im folgenden Beispiel dargestellt folgender AppContext-Schalter im Abschnitt <runtime> der Datei „app.config“ hinzugefügt und auf false festgelegt wird.

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

Anwendungen, die auf das .NET Framework 4.7.1 oder höher abzielen und das Legacy-Barrierefreiheitsverhalten beibehalten möchten, können sich für die Verwendung von Legacy-Barrierefreiheitsfunktionen entscheiden, indem Sie diesen AppContext-Switch explizit auf truesetzen. Eine Übersicht zur Benutzeroberflächenautomatisierung finden Sie unter UI-Automatisierungsübersicht.

Name Wert
Umfang Haupt
Version 4.7.1
Typ Neuausrichten

Betroffene APIs

Hinzufügen der öffentlichen Eigenschaft „Add SelectionTextBrush“ zur nicht auf Adorner basierenden Auswahl von TextBox/PasswordBox

Einzelheiten

In WPF-Anwendungen, die eine nicht auf Adorner basierende Textauswahl für TextBox und PasswordBox verwenden, können Entwickler nun die neu hinzugefügte „SelectionTextBrush“-Eigenschaft festlegen, um das Rendering des ausgewählten Texts zu ändern. Standardmäßig ändert sich diese Farbe mit HighlightTextBrushKey. Wenn die nicht auf Adorner basierende Textauswahl nicht aktiviert ist, hat diese Eigenschaft keine Auswirkungen.

Vorschlag

Sobald die textauswahl ohne Adorner aktiviert ist, können Sie mithilfe der Eigenschaften PasswordBox.SelectionTextBrush und SelectionTextBrush das Erscheinungsbild des markierten Texts ändern. Dies kann mit XAML erreicht werden:

<TextBox SelectionBrush="Red" SelectionTextBrush="White"  SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
Name Wert
Umfang Haupt
Version 4.8
Typ Neuausrichten

Betroffene APIs

HwndHost ändert nun die Größe eines untergeordneten HWND bei DPI-Änderungen ordnungsgemäß

Einzelheiten

Wenn WPF im PMA-Modus (Per-Monitor Aware) ausgeführt wurde, wurde in .NET Framework 4.7.2 und früheren Versionen die Größe von in HwndHost gehosteten Steuerelementen nach DPI-Änderungen, also beispielsweise beim Verschieben von Anwendungen von einem Monitor zu einem anderen, nicht ordnungsgemäß geändert. Dieser Fix stellt sicher, dass gehostete Steuerelemente größenmäßig angepasst sind.

Vorschlag

Damit die Anwendung von diesen Änderungen profitieren kann, muss sie auf .NET Framework 4.7.2 oder höher ausgeführt werden, und sie muss sich für dieses Verhalten anmelden, indem sie den folgenden AppContext-Switch im <runtime> Abschnitt der App-Konfigurationsdatei auf false", wie im folgenden Beispiel gezeigt, festlegen.

<?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>
Name Wert
Umfang Haupt
Version 4.8
Typ Neuausrichten

Windows Workflow Foundation (WF)

Verbesserungen der Bedienungshilfen im Workflow-Designer von Windows Workflow Foundation (WF)

Einzelheiten

Die Arbeitsweise von Workflow-Designer von Windows Workflow Foundation (WF) mit Technologien für die Barrierefreiheit wurde verbessert. Zu diesen Verbesserungen gehören die folgenden Änderungen:

  • Die Aktivierreihenfolge wurde bei manchen Steuerelementen in „ Von links nach rechts“ und in „Von oben nach unten“ geändert:
  • Das Fenster „Korrelation initialisieren“ für das Festlegen von Korrelationsdaten für die InitializeCorrelation-Aktivität
  • Das Fenster „Inhaltsdefinition“ für die Aktivitäten Receive, Send, SendReply und ReceiveReply
  • Weitere Funktionen stehen über die Tastatur zur Verfügung:
  • Beim Bearbeiten der Eigenschaften einer Aktivität können die Eigenschaftengruppen über die Tastatur reduziert werden, wenn diese zum ersten Mal fokussiert werden.
  • Auf Warnungssymbole kann jetzt über die Tastatur zugegriffen werden.
  • Auf die Schaltfläche "Weitere Eigenschaften" im Eigenschaftenfenster kann jetzt über die Tastatur zugegriffen werden.
  • Tastaturbenutzer können jetzt auf die Kopfzeilenelemente im Bereich "Argumente" und "Variablen" des Workflow-Designers zugreifen.
  • Verbesserte Sichtbarkeit von Elementen mit Fokus, z.B. in folgenden Fällen:
  • Hinzufügen von Zeilen zu Datenrastern, die vom Workflow-Designer und von Aktivitäts-Designern verwendet werden
  • Wechseln von Feldern mit der TAB-TASTE in den Aktivitäten ReceiveReply und SendReply
  • Festlegen von Standardwerten für Variablen oder Argumente
  • Sprachausgaben können Folgendes nun richtig erkennen:
  • Breakpoints, die im Workflow-Designer festgelegt wurden
  • Die Aktivitäten FlowSwitch<T>, FlowDecision und CorrelationScope
  • Die Inhalte der Receive-Aktivität
  • Den Zieltyp für die InvokeMethod-Aktivität
  • Das Kombinationsfeld „Ausnahme“ und den Abschnitt „Finally“ in der TryCatch-Aktivität
  • Das Kombinationsfeld „Nachrichtentyp“, den Splitter im Fenster „Korrelationsinitialisierer hinzufügen“, das Fenster „Inhaltsdefinition“ und das Definitionsfenster „CorrelatesOn“ in den Messagingaktivitäten (Receive, Send, SendReply und ReceiveReply)
  • Übertragungen von Zustandsautomaten und Übertragungsziele
  • Anmerkungen und Connectors von FlowDecision-Aktivitäten
  • Die per Rechtsklick aufrufbaren Kontextmenüs von Aktivitäten
  • Die Editors für Eigenschaftswerte, die Schaltfläche, „Suche löschen“, die Sortierschaltflächen „Nach Kategorie“ und „Alphabetisch“ sowie das Dialogfeld „Ausdrucks-Editor“ im Eigenschaftenraster
  • Der Zoomprozentsatz im Workflow-Designer.
  • Das Trennzeichen in den Aktivitäten Parallel und Pick
  • Die InvokeDelegate-Aktivität
  • Das Fenster "Typen auswählen" für Wörterbuchaktivitäten (Microsoft.Activities.AddToDictionary<TKey,TValue>, Microsoft.Activities.RemoveFromDictionary<TKey,TValue>usw.).
  • Das Fenster „.NET-Typ suchen und auswählen“
  • Breadcrumbs im Workflow-Designer
  • Benutzer, die Designs mit hohem Kontrast verwenden, werden viele Verbesserungen in der Sichtbarkeit des Workflow-Designers und dessen Steuerelementen feststellen. Dazu zählen verbesserte Kontrastverhältnisse zwischen Elementen und besser erkennbare Auswahlfelder für Fokuselemente.

Vorschlag

Wenn Sie über eine Anwendung mit einem neu gehosteten Workflow-Designer verfügen, kann Ihre Anwendung von diesen Änderungen profitieren, indem Sie eine der folgenden Aktionen ausführen:

  • Kompilieren Sie Ihre Anwendung neu, um das .NET Framework 4.7.1 zu verwenden. Diese Barrierefreiheitsänderungen sind standardmäßig aktiviert.
  • Wenn Ihre Anwendung .NET Framework 4.7 oder früher anzielt, aber auf .NET Framework 4.7.1 ausgeführt wird, können Sie die veralteten Verhaltensweisen für die Barrierefreiheit deaktivieren, indem Sie folgendes AppContext-Element zum <runtime>-Abschnitt der app.config-Datei hinzufügen und dieses wie im folgenden Beispiel dargestellt auf false festlegen.
<?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>

Bei Anwendungen, die .NET Framework 4.7.1 oder höher als Zielplattform verwenden und das Legacyverhalten für die Barrierefreiheit beibehalten sollen, können Sie die Verwendung des Legacyfeatures für die Barrierefreiheit aktivieren, indem Sie die AppContext-Option auf true festlegen.

Name Wert
Umfang Geringfügig
Version 4.7.1
Typ Neuausrichten

Workflow-XAML-Prüfsummen für Symbole, die von SHA1 zu SHA256 geändert wurden

Einzelheiten

Zur Unterstützung des Debuggens mit Visual Studio generiert die Workflowlaufzeit eine Prüfsumme für eine Workflow-XAML-Datei mit einem Hashingalgorithmus. In .NET Framework 4.6.2 und früheren Versionen verwendete das Workflow-Checksummen-Hashing den MD5-Algorithmus, der Probleme auf FIPS-fähigen Systemen verursachte. Ab .NET Framework 4.7 wurde der Standardalgorithmus in SHA1 geändert. Ab .NET Framework 4.8 wurde der Standardalgorithmus in SHA256 geändert.

Vorschlag

Wenn Ihr Code keine Workflowinstanzen laden oder aufgrund eines Prüfsummenfehlers geeignete Symbole finden kann, versuchen Sie, den AppContext Schalter "Switch.System.Activities.UseSHA1HashForDebuggerSymbols" auf true zu setzen. In Code:

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

Stattdessen können Sie dies auch im Rahmen der Konfiguration vornehmen:

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
  </runtime>
</configuration>
Name Wert
Umfang Geringfügig
Version 4.8
Typ Neuausrichten

Workflow-XOML-Definition und SqlTrackingService-Cacheschlüssel wurden von MD5 zu SHA256 geändert

Einzelheiten

Die Workflowlaufzeit behält einen Cache von Workflowdefinitionen bei, die in XOML definiert sind. SqlTrackingService verwaltet ebenfalls einen Cache, der mit Zeichenfolgen verschlüsselt ist. Diese Caches werden nach Werten verschlüsselt, die den Hashwert der Prüfsumme enthalten. In den Versionen bis einschließlich .NET Framework 4.7.2 wurde für das Prüfsummen-Hashing der MD5-Algorithmus verwendet, was auf FIPS-fähigen Systemen Probleme verursachte. Ab .NET Framework 4.8 ist der verwendete Algorithmus SHA256. Es sollte kein Kompatibilitätsproblem mit dieser Änderung auftreten, da die Werte jedes Mal neu berechnet werden, wenn die Workflow-Runtime und SqlTrackingService gestartet werden. Kunden haben jedoch die Möglichkeit, ggf. zur Verwendung des älteren Hashalgorithmus zurückzukehren.

Vorschlag

Wenn diese Änderung beim Ausführen von Workflows ein Problem darstellt, versuchen Sie, eine oder beide AppContext Optionen festzulegen:

  • Legen sie „Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey“ auf „true“ fest.
  • Legen Sie „Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey“ auf „true“ fest. In Code:
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey", true);
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey", true);

Oder in der Konfigurationsdatei (dies muss sich in der Konfigurationsdatei für die Anwendung befinden, die das WorkflowRuntime Objekt erstellt):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey=true" />
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKeytrue" />
</runtime>
</configuration>
Name Wert
Umfang Geringfügig
Version 4.8
Typ Neuausrichten

Workflow-XOML-Datei-Prüfsummen wurden von MD5 zu SHA256 geändert

Einzelheiten

Zur Unterstützung des Debuggens von XOML-basierten Workflows mit Visual Studio wird beim Erstellen von Workflowprojekten, die XOML-Dateien enthalten, eine Prüfsumme des Inhalts der XOML-Datei im code enthalten, der als WorkflowMarkupSourceAttribute.MD5Digest Wert generiert wird. In den Versionen bis einschließlich .NET Framework 4.7.2 wurde für das Prüfsummen-Hashing der MD5-Algorithmus verwendet, was auf FIPS-fähigen Systemen Probleme verursachte. Ab .NET Framework 4.8 ist der verwendete Algorithmus SHA256. Um mit dem WorkflowMarkupSourceAttribute.MD5Digest kompatibel zu sein, werden nur die ersten 16 Bytes der generierten Prüfsumme verwendet. Dies kann während des Debuggens zu Problemen führen. Möglicherweise müssen Sie Ihr Projekt neu erstellen.

Vorschlag

Wenn das Problem durch erneutes Erstellen des Projekts nicht behoben wird, versuchen Sie, den AppContext Schalter "Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum" auf "true" festzulegen. Im Code:

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

Oder in einer Konfigurationsdatei (diese muss sich in MSBuild.exe.config für die von Ihnen verwendete MSBuild.exe befinden):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
Name Wert
Umfang Geringfügig
Version 4.8
Typ Neuausrichten

.NET Framework 4.8.1

In .NET Framework 4.8.1 wurden keine App-Kompatibilitätsprobleme eingeführt.