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

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

.NET Framework 4.8

Kernspeicher

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

Details

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 nicht gemäß FIPS 140-2 (Federal Information Processing Standards) zertifiziert sind. Zudem werden Kryptografiealgorithmen blockiert, die im Sinne der FIPS-Regeln als nicht genehmigt galten. Da nur wenige Entwickler ihre Entwicklungscomputer im FIPS-Modus betreiben, werden diese Ausnahmen regelmäßig nur bei Produktionssystemen ausgelöst. Anwendungen, die .NET Framework 4.8 und höhere Versionen verwenden, wechseln automatisch zur neueren, gelockerten Richtlinie, sodass CryptographicException in diesen Fällen nicht mehr standardmäßig ausgelöst wird. Stattdessen leiten die verwalteten Kryptografieklassen kryptografische Vorgänge an eine kryptografische Systembibliothek weiter. Durch diese Richtlinienänderung wird ein möglicherweise verwirrender Unterschied zwischen Entwicklungs- und Produktionsumgebungen beseitigt, und native Komponenten und verwaltete Komponenten werden gemäß derselben Kryptografierichtlinie ausgeführt.

Vorschlag

Wenn dieses Verhalten nicht erwünscht ist, können Sie es deaktivieren und das vorherige Verhalten wiederherstellen, sodass eine CryptographicException im FIPS-Modus ausgelöst wird, indem Sie die folgende AppContextSwitchOverrides-Konfigurationseinstellung im Abschnitt <runtime> der Konfigurationsdatei Ihrer Anwendung hinzufügen:

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

Wenn Ihre Anwendung für .NET Framework 4.7.2 oder frühere Versionen konzipiert ist, können Sie diese Änderung aktivieren, indem Sie die folgende AppContextSwitchOverrides-Konfigurationseinstellung im Abschnitt <runtime> der Konfigurationsdatei Ihrer Anwendung hinzufügen:

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Name Wert
Bereich Microsoft Edge
Version 4.8
Typ Neuzuweisung

Betroffene APIs

Windows Forms

Verbesserung der Barrierefreiheit von Windows Forms-Steuerelementen für .NET 4.8

Details

Die Arbeitsweise des Windows Forms-Frameworks mit Technologien für die Barrierefreiheit wird weiter verbessert, um Kunden von Windows Forms besser zu unterstützen. Folgende Änderungen wurden u.a. vorgenommen:

  • Änderungen zum Verbessern der Anzeige während des Modus mit hohem Kontrast
  • Änderungen an der Interaktion mit der Sprachausgabe.
  • Änderungen an der Hierarchie der Barrierefreiheit (Verbesserung der Navigation durch die Benutzeroberflächenautomatisierungsstruktur)

Vorschlag

Aktivieren oder Deaktivieren dieser Änderungen: Damit die Anwendung von diesen Änderungen profitieren kann, muss sie unter .NET Framework 4.8 oder höher ausgeführt werden. Die Anwendung kann diese Änderungen aktivieren, wenn Sie Folgendes durchführen:

  • Kompilieren Sie diese nochmals, um .NET Framework 4.8 zu verwenden. Diese Änderungen der Barrierefreiheit werden standardmäßig für Windows Forms-Anwendungen aktiviert, die .NET Framework 4.8 oder höher verwenden.
  • Die Anwendung verwendet .NET Framework 4.7.2 oder eine frühere Version und deaktiviert veraltete Verhaltensweisen der Barrierefreiheit, indem wie im folgenden Beispiel dargestellt folgender AppContext-Switch zum 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;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false" />
  </runtime>
</configuration>

Beachten Sie Folgendes: Um die Barrierefreiheitsfunktionen zu aktivieren, die in .NET Framework 4.8 hinzugefügt wurden, müssen Sie auch die Barrierefreiheitsfunktion von .NET Framework 4.7.1 und 4.7.2 aktivieren. Bei Anwendungen, die .NET Framework 4.8 verwenden und die veralteten Verhaltensweisen für die Barrierefreiheit beibehalten sollen, können Sie die Verwendung des veralteten Features für die Barrierefreiheit aktivieren, indem Sie den AppContext-Switch auf true festlegen. Wenn Sie die Unterstützung zum Aufrufen der QuickInfo für Tastenkombinationen aktivieren möchten, müssen Sie dem „AppContextSwitchOverrides“-Wert die Zeile Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false hinzufügen:

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

Zum Aktivieren dieser Funktion müssen Sie die bereits erwähnten Barrierefreiheitsfunktionen von .NET Framework 4.7.1 bis 4.8 aktivieren. 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 für QuickInfos für Tastenkombinationen die Barrierefreiheitsverbesserungen der Stufe 3 aktiviert werden müssen.

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

  • Verbesserte Designs mit hohem Kontrast

Verbesserte Unterstützung für die Sprachausgabe

Verbesserte Unterstützung der CheckedListBox-Barrierefreiheit

  • 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.
  • Bei einem leeren CheckedListBox-Steuerelement wird nun ein Fokusrechteck für ein virtuelles erstes Element angezeigt, wenn der Fokus auf dem Steuerelement liegt.

Verbesserte Unterstützung der ComboBox-Barrierefreiheit

  • 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 Unterstützung der LinkLabel-Barrierefreiheit

  • Verbesserte Barrierefreiheit für das LinkLabel-Steuerelement: Die Sprachausgabe kündigt den deaktivierten Zustand für den Link an, wenn das entsprechende LinkLabel-Steuerelement deaktiviert ist.

Verbesserte Unterstützung der ProgressBar-Barrierefreiheit

  • Die Unterstützung für die Benutzeroberflächenautomatisierung wurde für das ProgressBar-Steuerelement mit der Möglichkeit aktiviert, Benachrichtigungen der Benutzeroberflächenautomatisierung und andere Funktionen der Benutzeroberflächenautomatisierung 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 Ereignisse der Benutzeroberflächenautomatisierung, einschließlich Benachrichtigungsereignisse der Benutzeroberflächenautomatisierung, finden Sie unter Übersicht über Ereignisse zur Benutzeroberflächenautomatisierung.

Verbesserte Unterstützung der PropertyGrid-Barrierefreiheit

  • 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 Sprachausgabefokus nicht und wechselt nicht zu ausgeblendeten Elementen.

Verbesserte visuelle Hinweise

  • Ein leeres CheckedListBox-Steuerelement zeigt nun einen Fokusindikator an, wenn es den Fokus erhält. Hinweis: Die Unterstützung für die Benutzeroberflächenautomatisierung für Steuerelemente wird zur Laufzeit aktiviert, wird jedoch zur Entwurfszeit nicht verwendet. Einen Überblick über die Benutzeroberflächenautomatisierung finden Sie unter Benutzeroberflächenautomatisierung: Übersicht.

Aufrufen von QuickInfos für Steuerelemente über die Tastatur

  • QuickInfos für Steuerelemente können nun durch Fokussieren des Steuerelements über die Tastatur aufgerufen werden. Diese Funktion muss für die Anwendung explizit aktiviert werden (siehe Aktivieren bzw. Deaktivieren dieser Änderungen).
Name Wert
Bereich Hauptversion
Version 4.8
Typ Neuzuweisung

Windows Presentation Foundation (WPF)

Verbesserungen der Barrierefreiheit in WPF

Details

Verbesserungen beim hohen Kontrast

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

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

Sprachausgaben wie das Feature „Sprachausgabe“ helfen Benutzern, die Benutzeroberfläche einer Anwendung zu verstehen. In der Regel wird dazu das Benutzeroberflächenelement beschrieben, das gerade im Fokus ist. Wenn ein Element der Benutzeroberfläche sich jedoch an einer beliebigen Stelle des Bildschirms ändert und nicht fokussiert wird, wird der Benutzer möglicherweise nicht informiert und verpasst wichtige Informationen. LiveRegions wurden dafür entwickelt, dieses Problem zu 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. Die Sprachausgabe kann dann entscheiden, wie und wann der Benutzer über diese Änderung informiert wird. Die LiveSetting-Eigenschaft sorgt ebenfalls dafür, dass die Sprachausgabe den Benutzer über Änderungen an der Benutzeroberfläche informiert.

Vorschlag

Aktivieren bzw. Deaktivieren dieser Änderungen

Damit die Anwendung von diesen Änderungen profitieren kann, muss sie unter .NET Framework 4.7.1 oder höher ausgeführt werden. Die Anwendung kann von diesen Änderungen profitieren, wenn Sie Folgendes durchführen:

  • Richten Sie die Anwendung auf .NET Framework-Version 4.7.1 aus. Dies ist die empfohlene Vorgehensweise. Diese Änderungen für mehr Barrierefreiheit werden automatisch für WPF-Anwendungen aktiviert, die für .NET Framework 4.7.1 oder höher entwickelt wurden.

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

Bei Anwendungen, deren Zielplattform .NET Framework 4.7.1 oder höher ist und für die das Legacyverhalten für die Barrierefreiheit beibehalten sollen, können Sie das Legacyfeature für die Barrierefreiheit aktivieren, indem Sie die AppContext-Option auf true festlegen. Einen Überblick über die Benutzeroberflächenautomatisierung finden Sie unter Übersicht über die Benutzeroberflächenautomatisierung.

Name Wert
Bereich Hauptversion
Version 4.7.1
Typ Neuzuweisung

Betroffene APIs

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

Details

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. Diese Farbe ändert sich standardmäßig mit HighlightTextBrushKey. Wenn die nicht auf Adorner basierende Textauswahl nicht aktiviert ist, hat diese Eigenschaft keine Auswirkungen.

Vorschlag

Nach dem Aktivieren einer nicht auf Adorner basierenden Textauswahl können Sie die Eigenschaften PasswordBox.SelectionTextBrush und SelectionTextBrush verwenden, um die Darstellung des ausgewählten Texts zu ändern. Dies kann mithilfe von XAML erreicht werden:

<TextBox SelectionBrush="Red" SelectionTextBrush="White"  SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
name Wert
Bereich Hauptversion
Version 4.8
Typ Neuzuweisung

Betroffene APIs

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

Details

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. Mit dieser Korrektur wird sichergestellt, dass die Größe von gehosteten Steuerelementen ordnungsgemäß geändert wird.

Vorschlag

Damit die Anwendung von diesen Änderungen profitiert, muss sie unter .NET Framework 4.7.2 oder höher ausgeführt werden. Zudem muss dieses Verhalten aktiviert werden, indem der folgende AppContext-Switch im <runtime>-Abschnitt der Konfigurationsdatei der Anwendung wie im folgenden Beispiel 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 &#39;key1=true/false;key2=true/false  -->
<AppContextSwitchOverrides value="Switch.System.Windows.DoNotUsePresentationDpiCapabilityTier2OrGreater=false" />
</runtime>
</configuration>
name Wert
Bereich Hauptversion
Version 4.8
Typ Neuzuweisung

Windows Workflow Foundation (WF)

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

Details

Die Arbeitsweise von Workflow-Designer von Windows Workflow Foundation (WF) mit Technologien für die Barrierefreiheit wurde verbessert. Diese Verbesserungen umfassen folgende Ä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 sind über die Tastatur verfügbar:
  • Beim Bearbeiten der Eigenschaften einer Aktivität können die Eigenschaftengruppen über die Tastatur reduziert werden, wenn diese zum ersten Mal fokussiert werden.
  • Auf Warnsymbole kann nun über die Tastatur zugegriffen werden.
  • Auf die Schaltfläche „Weitere Eigenschaften“ im Fenster „Eigenschaften“ kann nun über die Tastatur zugegriffen werden.
  • Tastaturbenutzer können nun auf die Headerelemente in den Bereichen „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
  • Den Zoomprozentwert 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 eine Anwendung mit einem neu gehosteten Workflow-Designer besitzen, kann Ihre Anwendung von diesen Änderungen profitieren, indem Sie eine der folgenden Aktionen durchführen:

  • Rekompilieren Sie Ihre Anwendung, um .NET Framework 4.7.1 anzuzielen. Die Verbesserungen der Barrierefreiheit werden 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 die Legacy-Barrierefreiheitsverhalten beibehalten sollen, können Sie die Verwendung des veralteten Features für die Barrierefreiheit aktivieren, indem Sie die AppContext-Option auf true festlegen.

name Wert
Bereich Gering
Version 4.7.1
Typ Neuzuweisung

Änderung der Workflow-XAML-Prüfsummen für Symbole von SHA1 in SHA256

Details

Die Workflowlaufzeit generiert unter Verwendung eines Hashalgorithmus zur Unterstützung des Debuggens mit Visual Studio eine Prüfsumme für eine Workflow-XAML-Datei. In .NET Framework 4.6.2 und früheren Versionen wird beim Hashing der Workflowprüfsumme der MD5-Algorithmus verwendet, der auf Systemen, auf den FIPS aktiviert ist, Probleme verursacht hat. 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 aufgrund eines Prüfsummenfehlers keine Workflowinstanzen laden oder keine entsprechende Symbole finden kann, sollten Sie versuchen, die AppContext-Option „Switch.System.Activities.UseSHA1HashForDebuggerSymbols“ auf true festzulegen. 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
Bereich Gering
Version 4.8
Typ Neuzuweisung

Änderung von XOML-Workflowdefinition und ndSqlTrackingService-Cacheschlüssel von MD5 in SHA256

Details

Die Workflowlaufzeit verwaltet einen Cache mit in XOML definierten Workflowdefinitionen. 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 .NET Framework 4.7.2 und früheren Versionen wird beim Hashing der Prüfsumme der MD5-Algorithmus verwendet, der auf Systemen, auf den FIPS aktiviert ist, Probleme verursacht hat. Ab .NET Framework 4.8 wird der Algorithmus SHA256 verwendet. Diese Änderung bringt kein Kompatibilitätsproblem mit sich, da die Werte bei jedem Start von Workflowlaufzeit und SqlTrackingService neu berechnet 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, legen Sie einen oder beide AppContext-Switches auf „True“ fest:

  • 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 der Anwendung, 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
Bereich Gering
Version 4.8
Typ Neuzuweisung

Änderung der Workflowprüfsummen der XOML-Datei von MD5 in SHA256

Details

Um das Debuggen von XOML-basierten Workflows mit Visual Studio zu unterstützen, wird beim Erstellen von Workflowprojekten, die XOML-Dateien enthalten, eine Prüfsumme des Inhalts der XOML-Datei in den als WorkflowMarkupSourceAttribute.MD5Digest-Wert erzeugten Code aufgenommen. In .NET Framework 4.7.2 und früheren Versionen wird beim Hashing der Prüfsumme der MD5-Algorithmus verwendet, der auf Systemen, auf den FIPS aktiviert ist, Probleme verursacht hat. Ab .NET Framework 4.8 wird der SHA256-Algorithmus verwendet. Um mit dem WorkflowMarkupSourceAttribute.MD5Digest kompatibel zu sein, werden nur die ersten 16 Bytes der erzeugten Prüfsumme verwendet. Dies kann zu Problemen beim Debuggen führen. Sie müssen das Projekt ggf. neu erstellen.

Vorschlag

Wenn die Neukompilierung Ihres Projekts das Problem nicht löst, versuchen Sie, die AppContext-Option „Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum“ auf „true“ festzulegen. Als 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
Bereich Gering
Version 4.8
Typ Neuzuweisung

.NET Framework 4.8.1

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