Ponowne pobieranie zmian migracji do programu .NET Framework 4.8.x

W tym artykule wymieniono problemy ze zgodnością aplikacji wprowadzone w programie .NET Framework 4.8 i 4.8.1.

.NET Framework 4.8

Podstawowe funkcje

Klasy kryptografii zarządzanej nie zgłaszają wyjątku kryptografii w trybie FIPS

Szczegóły

W programie .NET Framework 4.7.2 i starszych wersjach zarządzane klasy dostawców kryptograficznych, takie jak SHA256Managed zgłaszanie CryptographicException , gdy systemowe biblioteki kryptograficzne są skonfigurowane w trybie FIPS. Te wyjątki są zgłaszane, ponieważ wersje zarządzane nie zostały poddane certyfikacji FIPS (Federal Information Processing Standards) 140-2, a także do blokowania algorytmów kryptograficznych, które nie zostały uznane za zatwierdzone na podstawie reguł FIPS. Ponieważ niewielu deweloperów ma swoje maszyny programistyczne w trybie FIPS, te wyjątki są często zgłaszane tylko w systemach produkcyjnych. Aplikacje przeznaczone dla platformy .NET Framework 4.8 i nowszych automatycznie przełączają się do nowszych, zrelaksowanych zasad, dzięki czemu CryptographicException element nie jest już zgłaszany domyślnie w takich przypadkach. Zamiast tego zarządzane klasy kryptograficzne przekierowują operacje kryptograficzne do biblioteki kryptograficznej systemu. Ta zmiana zasad skutecznie usuwa potencjalnie mylącą różnicę między środowiskami deweloperskimi a środowiskami produkcyjnymi i sprawia, że składniki natywne i składniki zarządzane działają w ramach tych samych zasad kryptograficznych.

Sugestia

Jeśli to zachowanie jest niepożądane, możesz zrezygnować z niego i przywrócić poprzednie zachowanie, aby element CryptographicException został zgłoszony w trybie FIPS, dodając następujące ustawienie konfiguracji AppContextSwitchOverrides do <sekcji środowiska uruchomieniowego> pliku konfiguracji aplikacji:

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

Jeśli aplikacja jest przeznaczona dla programu .NET Framework 4.7.2 lub starszego, możesz również wyrazić zgodę na tę zmianę, dodając następujące ustawienie konfiguracji AppContextSwitchOverrides do <sekcji środowiska uruchomieniowego> pliku konfiguracji aplikacji:

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Nazwa/nazwisko Wartość
Zakres Edge
Wersja 4.8
Typ Przekierowanie

Dotyczy interfejsów API

Windows Forms

Ulepszenia ułatwień dostępu w kontrolkach formularzy systemu Windows dla platformy .NET 4.8

Szczegóły

Struktura Windows Forms Framework nadal ulepsza sposób działania z technologiami ułatwień dostępu, aby lepiej obsługiwać klientów systemu Windows Forms. Obejmują one następujące zmiany:

  • Zmiany w celu ulepszenia wyświetlania w trybie dużego kontrastu.
  • Zmiany interakcji z Narratorem.
  • Zmiany w hierarchii Dostępne (ulepszanie nawigacji za pośrednictwem drzewa automatyzacja interfejsu użytkownika).

Sugestia

Jak wyrazić zgodę na te zmiany lub zrezygnować z tych zmian Aby aplikacja korzystała z tych zmian , musi działać w programie .NET Framework 4.8. Aplikacja może wyrazić zgodę na te zmiany w jeden z następujących sposobów:

  • Jest on ponownie komkompilowany w celu kierowania programu .NET Framework 4.8. Te zmiany ułatwień dostępu są domyślnie włączone w aplikacjach windows Forms przeznaczonych dla programu .NET Framework 4.8.
  • Jest ona przeznaczona dla programu .NET Framework 4.7.2 lub starszej wersji i rezygnuje ze starszych zachowań ułatwień dostępu, dodając następujący przełącznik AppContext do <runtime> sekcji pliku konfiguracji aplikacji i ustawiając go na falsewartość , jak pokazano w poniższym przykładzie.
<?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>

Należy pamiętać, że aby wyrazić zgodę na funkcje ułatwień dostępu dodane w programie .NET Framework 4.8, należy również wyrazić zgodę na funkcje ułatwień dostępu programu .NET Framework 4.7.1 i 4.7.2. Aplikacje, które są przeznaczone dla programu .NET Framework 4.8 i chcą zachować starsze zachowanie ułatwień dostępu, mogą wyrazić zgodę na korzystanie ze starszych funkcji ułatwień dostępu przez jawne ustawienie tego przełącznika AppContext na true. Włączenie obsługi wywołania etykietki narzędzia klawiatury wymaga dodania Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false wiersza do wartości AppContextSwitchOverrides:

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

Należy pamiętać, że włączenie tej funkcji wymaga włączenia wyżej wymienionych funkcji ułatwień dostępu programu .NET Framework 4.7.1 — 4.8. Ponadto, jeśli którakolwiek z funkcji ułatwień dostępu nie zostanie wybrana, ale funkcja wyświetlania etykietki narzędzia zostanie wybrana, środowisko uruchomieniowe NotSupportedException zostanie rzucone na pierwszy dostęp do tych funkcji. Komunikat o wyjątku wskazuje, że narzędzie klawiatury Wskazówki wymaga włączenia ulepszeń ułatwień dostępu poziomu 3.

Używanie kolorów zdefiniowanych przez system operacyjny w motywach dużego kontrastu

  • Ulepszone motywy o wysokim kontraście.

Ulepszona obsługa narratora

Ulepszona obsługa ułatwień dostępu CheckedListBox

  • Ulepszona obsługa narratora dla kontrolki CheckedListBox . Podczas przechodzenia do kontrolki CheckedListBox za pomocą klawiatury Narrator koncentruje CheckedListBox element i ogłasza go.
  • Pusta kontrolka CheckedListBox ma teraz prostokąt fokusu narysowany dla wirtualnego pierwszego elementu, gdy kontrolka staje się skoncentrowana.

Ulepszona obsługa ułatwień dostępu ComboBox

  • Włączona obsługa automatyzacja interfejsu użytkownika dla kontrolki ComboBox z możliwością korzystania z powiadomień automatyzacja interfejsu użytkownika i innych funkcji automatyzacja interfejsu użytkownika. Ulepszona obsługa ułatwień dostępu dataGridView

  • Włączona obsługa automatyzacja interfejsu użytkownika kontroli DataGridView z możliwością używania powiadomień automatyzacja interfejsu użytkownika i innych funkcji automatyzacja interfejsu użytkownika.

  • Element automatyzacja interfejsu użytkownika odpowiadający elementowi DataGridViewComboBoxEditingControl lub DataGridViewTextBoxEditingControl jest teraz elementem podrzędnym odpowiadającej mu komórki edycji.

Ulepszona obsługa ułatwień dostępu LinkLabel

  • Ulepszone LinkLabel ułatwienia dostępu do kontroli: Narrator ogłasza stan wyłączenia linku, jeśli odpowiednia LinkLabel kontrolka jest wyłączona.

Ulepszona obsługa ułatwień dostępu ProgressBar

  • Włączona obsługa automatyzacja interfejsu użytkownika kontroli ProgressBar z możliwością używania powiadomień automatyzacja interfejsu użytkownika i innych funkcji automatyzacja interfejsu użytkownika. Deweloperzy mogą teraz używać automatyzacja interfejsu użytkownika powiadomień, które Narrator może ogłosić, aby wskazać postęp. Aby zapoznać się z omówieniem zdarzeń automatyzacji interfejsu użytkownika, w tym zdarzeń powiadomień automatyzacji interfejsu użytkownika, zobacz omówienie zdarzeń automatyzacja interfejsu użytkownika.

Ulepszona obsługa ułatwień dostępu propertyGrid

  • Włączona obsługa automatyzacja interfejsu użytkownika dla kontrolki PropertyGrid z możliwością korzystania z powiadomień automatyzacja interfejsu użytkownika i innych funkcji automatyzacja interfejsu użytkownika.
  • Element automatyzacja interfejsu użytkownika odpowiadający aktualnie edytowanej właściwości jest teraz elementem podrzędnym odpowiedniego elementu właściwości automatyzacja interfejsu użytkownika.
  • Element elementu właściwości automatyzacja interfejsu użytkownika jest teraz elementem podrzędnym odpowiedniego elementu kategorii, jeśli kontrolka nadrzędna PropertyGrid jest ustawiona na widok kategorii.

Ulepszona obsługa elementu ToolStrip

  • Włączona obsługa automatyzacja interfejsu użytkownika dla kontrolki ToolStrip z możliwością korzystania z powiadomień automatyzacja interfejsu użytkownika i innych funkcji automatyzacja interfejsu użytkownika.
  • Ulepszona nawigacja przez ToolStrip elementy.
  • W trybie elementów fokus Narratora nie zniknie i nie przechodzi do ukrytych elementów.

Ulepszone podpowiedzi wizualne

  • Pusta CheckedListBox kontrolka wyświetla teraz wskaźnik koncentracji uwagi po odebraniu fokusu. Uwaga: obsługa automatyzacji interfejsu użytkownika jest włączona dla kontrolek w środowisku uruchomieniowym, ale nie jest używana w czasie projektowania. Aby zapoznać się z omówieniem automatyzacji interfejsu użytkownika, zobacz omówienie automatyzacja interfejsu użytkownika.

Wywoływanie narzędzia kontrolek Wskazówki za pomocą klawiatury

  • Etykietka narzędzia sterującego może być teraz wywoływana przez skoncentrowanie kontrolki za pomocą klawiatury. Ta funkcja musi być jawnie włączona dla aplikacji (zobacz sekcję "Jak wyrazić zgodę na te zmiany lub je wycofać")
Nazwa/nazwisko Wartość
Zakres Główna
Wersja 4.8
Typ Przekierowanie

Windows Presentation Foundation (WPF)

Ulepszenia ułatwień dostępu w WPF

Szczegóły

Ulepszenia wysokiego kontrastu

  • Fokus kontrolki Expander jest teraz widoczny. W poprzednich wersjach programu .NET Framework nie było.
  • Tekst w pliku CheckBox i RadioButton kontrolki, gdy są zaznaczone, jest teraz łatwiejszy do wyświetlenia niż w poprzednich wersjach programu .NET Framework.
  • Obramowanie wyłączonego ComboBox jest teraz tym samym kolorem co wyłączony tekst. W poprzednich wersjach programu .NET Framework nie było.
  • Wyłączone i ukierunkowane przyciski używają teraz poprawnego koloru motywu. W poprzednich wersjach programu .NET Framework nie były.
  • Przycisk listy rozwijanej jest teraz widoczny, gdy ComboBox styl kontrolki jest ustawiony na wartość ToolBar.ComboBoxStyleKey. W poprzednich wersjach programu .NET Framework nie było.
  • Strzałka wskaźnika sortowania w kontrolce DataGrid używa teraz kolorów motywu. W poprzednich wersjach programu .NET Framework nie było.
  • Domyślny styl hiperłącza teraz zmienia się na prawidłowy kolor motywu na myszy. W poprzednich wersjach programu .NET Framework nie było.
  • Fokus klawiatury na przyciskach radiowych jest teraz widoczny. W poprzednich wersjach programu .NET Framework nie było.
  • Kolumna DataGrid pola wyboru kontrolki używa teraz oczekiwanych kolorów dla opinii fokusu klawiatury. W poprzednich wersjach programu .NET Framework nie było.
  • Wizualizacje fokusu klawiatury są teraz widoczne dla ComboBox kontrolek i .ListBox W poprzednich wersjach programu .NET Framework nie było.

Ulepszenia interakcji czytnika zawartości ekranu

  • Expander Kontrolki są teraz poprawnie ogłaszane jako grupy (rozwijanie/zwijanie) przez czytniki zawartości ekranu.
  • DataGridCell Kontrolki są teraz poprawnie ogłaszane jako komórka siatki danych (zlokalizowane) przez czytniki zawartości ekranu.
  • Czytniki zawartości ekranu będą teraz ogłaszać nazwę edytowalnego ComboBoxelementu .
  • PasswordBox Kontrolki nie są już ogłaszane jako "brak elementu w widoku" przez czytniki zawartości ekranu.

Obsługa regionów na żywo

Czytniki zawartości ekranu, takie jak Narrator, ułatwiają użytkownikom zrozumienie interfejsu użytkownika aplikacji, zwykle przez opisywanie elementu interfejsu użytkownika, który ma obecnie fokus. Jeśli jednak element interfejsu użytkownika zmieni się gdzieś na ekranie i nie ma fokusu, użytkownik może nie być poinformowany i przegapić ważne informacje. LiveRegions mają rozwiązać ten problem. Deweloper może ich używać do informowania czytnika zawartości ekranu lub dowolnego innego klienta automatyzacja interfejsu użytkownika o wprowadzeniu ważnych zmian w elemecie interfejsu użytkownika. Czytnik zawartości ekranu może następnie zdecydować, jak i kiedy poinformować użytkownika o tej zmianie. Właściwość LiveSetting umożliwia również czytnikowi zawartości ekranu określenie, jak ważne jest informowanie użytkownika o zmianie wprowadzonej w interfejsie użytkownika.

Sugestia

Jak wyrazić zgodę na te zmiany lub je wycofać

Aby aplikacja korzystała z tych zmian, musi działać w programie .NET Framework 4.7.1 lub nowszym. Aplikacja może korzystać z tych zmian w jeden z następujących sposobów:

  • Docelowy program .NET Framework 4.7.1. Jest to zalecane podejście. Te zmiany ułatwień dostępu są domyślnie włączone w aplikacjach WPF przeznaczonych dla programu .NET Framework 4.7.1 lub nowszego.

  • Rezygnacja z starszych zachowań ułatwień dostępu przez dodanie następującego przełącznika AppContext w sekcji pliku konfiguracji aplikacji i ustawienie go na falsewartość , jak pokazano w <runtime> poniższym przykładzie.

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

Aplikacje przeznaczone dla programu .NET Framework 4.7.1 lub nowszego i chcą zachować starsze zachowanie ułatwień dostępu, mogą wyrazić zgodę na korzystanie ze starszych funkcji ułatwień dostępu przez jawne ustawienie tego przełącznika AppContext na true. Aby zapoznać się z omówieniem automatyzacji interfejsu użytkownika, zobacz automatyzacja interfejsu użytkownika Omówienie.

Nazwa/nazwisko Wartość
Zakres Główna
Wersja 4.7.1
Typ Przekierowanie

Dotyczy interfejsów API

Dodaj właściwość publiczną SelectionTextBrush do zaznaczenia elementu TextBox/PasswordBox spoza adoratora

Szczegóły

W aplikacjach WPF używających zaznaczenia tekstu opartego na elementach innych niż adorator i TextBoxPasswordBoxdeweloperzy mogą teraz ustawić nowo dodaną właściwość SelectionTextBrush w celu zmiany renderowania zaznaczonego tekstu. Domyślnie ten kolor zmienia się na HighlightTextBrushKey. Jeśli nie włączono zaznaczenia tekstu opartego na modułach adoratora, ta właściwość nic nie robi.

Sugestia

Po włączeniu zaznaczenia tekstu innego niż adorner można użyć PasswordBox.SelectionTextBrush właściwości i SelectionTextBrush , aby zmienić wygląd zaznaczonego tekstu. Można to osiągnąć przy użyciu języka XAML:

<TextBox SelectionBrush="Red" SelectionTextBrush="White"  SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
Nazwa/nazwisko Wartość
Zakres Główna
Wersja 4.8
Typ Przekierowanie

Dotyczy interfejsów API

HwndHost teraz poprawnie zmienia rozmiar child-HWND podczas zmian DPI

Szczegóły

W programie .NET Framework 4.7.2 i starszych wersjach, gdy WPF był uruchamiany w trybie obsługującym monitor, kontrolki hostowane w programie HwndHost nie były poprawnie ustawiane po zmianie dpi, na przykład podczas przenoszenia aplikacji z jednego monitora do innego. Ta poprawka gwarantuje, że hostowane kontrolki mają odpowiedni rozmiar.

Sugestia

Aby aplikacja korzystała z tych zmian, musi działać w programie .NET Framework 4.7.2 lub nowszym i musi wyrazić zgodę na to zachowanie, ustawiając następujący przełącznik AppContext w <runtime> sekcji pliku konfiguracji aplikacji na falsewartość , jak pokazano w poniższym przykładzie.

<?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>
Nazwa/nazwisko Wartość
Zakres Główna
Wersja 4.8
Typ Przekierowanie

Windows Workflow Foundation (WF)

Ulepszenia ułatwień dostępu w projektancie przepływu pracy programu Windows Workflow Foundation (WF)

Szczegóły

Projektant przepływu pracy programu Windows Workflow Foundation (WF) ulepsza sposób działania z technologiami ułatwień dostępu. Te ulepszenia obejmują następujące zmiany:

  • Kolejność tabulacji została zmieniona na lewą do prawej i od góry do dołu w niektórych kontrolkach:
  • Okno inicjowania korelacji do ustawiania danych korelacji dla InitializeCorrelation działania
  • Okno definicji zawartości dla Receivedziałań , Send, SendReplyi ReceiveReply
  • Więcej funkcji jest dostępnych za pomocą klawiatury:
  • Podczas edytowania właściwości działania grupy właściwości można zwinąć za pomocą klawiatury po raz pierwszy.
  • Ikony ostrzeżeń są teraz dostępne za pomocą klawiatury.
  • Przycisk Więcej właściwości w okno Właściwości jest teraz dostępny za pomocą klawiatury.
  • Użytkownicy klawiatury mogą teraz uzyskiwać dostęp do elementów nagłówka w okienkach Argumenty i zmienne Projektant przepływu pracy.
  • Ulepszona widoczność elementów z fokusem, na przykład w następujących przypadkach:
  • Dodawanie wierszy do siatek danych używanych przez projektantów przepływu pracy Projektant i działań.
  • Tabbing through fields in the and ( Tabbing through fields in the and activities ( Tabbing through fields in the ReceiveReply and SendReply activities ( Tabbing
  • Ustawianie wartości domyślnych zmiennych lub argumentów
  • Czytniki zawartości ekranu mogą teraz poprawnie rozpoznać:
  • Punkty przerwania ustawione w projektancie przepływu pracy.
  • Działania FlowSwitch<T>, FlowDecisioni CorrelationScope .
  • Zawartość Receive działania.
  • Typ docelowy InvokeMethod działania.
  • Pole kombi Wyjątek i sekcja Finally w TryCatch działaniu.
  • Pole kombi Typ komunikatu, rozdzielacz w oknie Dodawanie inicjatorów korelacji, okno Definicja zawartości i okno Koreluj definicję w działaniach obsługi komunikatów (Receive, Send, SendReplyi ReceiveReply).
  • Przejścia i przejścia maszyny stanu.
  • Adnotacje i łączniki dotyczące FlowDecision działań.
  • Menu kontekstowe (kliknij prawym przyciskiem myszy) dla działań.
  • Edytory wartości właściwości, przycisk Wyczyść wyszukiwanie, przyciski Według kategorii i sortowania alfabetycznego oraz okno dialogowe Edytor wyrażeń w siatce właściwości.
  • Procent powiększenia w Projektant przepływu pracy.
  • Separator w Parallel i Pick działania.
  • Działanie InvokeDelegate .
  • Okno Wybieranie typów dla działań słownika (Microsoft.Activities.AddToDictionary<TKey,TValue>, Microsoft.Activities.RemoveFromDictionary<TKey,TValue>itp.).
  • Okno Przeglądaj i Wybierz typ platformy .NET.
  • Linki do stron nadrzędnych w Projektant przepływu pracy.
  • Użytkownicy, którzy wybierają motywy o wysokim kontraście, zobaczą wiele ulepszeń widoczności Projektant przepływów pracy i jego kontrolek, takich jak lepsze współczynniki kontrastu między elementami i bardziej zauważalne pola wyboru używane dla elementów fokusu.

Sugestia

Jeśli masz aplikację z ponownie hostowanym projektantem przepływu pracy, aplikacja może skorzystać z tych zmian, wykonując jedną z następujących akcji:

  • Ponownie skompiluj aplikację w celu kierowania programu .NET Framework 4.7.1. Te zmiany ułatwień dostępu są domyślnie włączone.
  • Jeśli aplikacja jest przeznaczona dla programu .NET Framework 4.7 lub starszego, ale działa w programie .NET Framework 4.7.1, możesz zrezygnować z tych starszych zachowań ułatwień dostępu, dodając następujący przełącznik AppContext do <runtime> sekcji pliku app.config i ustawić go na falsewartość , jak pokazano w poniższym przykładzie.
<?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>

Aplikacje przeznaczone dla programu .NET Framework 4.7.1 lub nowszego i chcą zachować starsze zachowanie ułatwień dostępu, mogą wyrazić zgodę na korzystanie ze starszych funkcji ułatwień dostępu przez jawne ustawienie tego przełącznika AppContext na true.

Nazwa/nazwisko Wartość
Zakres Mały
Wersja 4.7.1
Typ Przekierowanie

Sumy kontrolne XAML przepływu pracy dla symboli zostały zmienione z SHA1 na SHA256

Szczegóły

Aby obsługiwać debugowanie za pomocą programu Visual Studio, środowisko uruchomieniowe przepływu pracy generuje sumę kontrolną dla pliku XAML przepływu pracy przy użyciu algorytmu tworzenia skrótów. W programie .NET Framework 4.6.2 i starszych wersjach skrót sumy kontrolnej przepływu pracy używał algorytmu MD5, co powodowało problemy w systemach obsługujących standard FIPS. Począwszy od programu .NET Framework 4.7, domyślny algorytm został zmieniony na SHA1. Począwszy od programu .NET Framework 4.8, domyślny algorytm został zmieniony na SHA256.

Sugestia

Jeśli kod nie może załadować wystąpień przepływu pracy lub znaleźć odpowiednie symbole z powodu błędu sumy kontrolnej, spróbuj ustawić AppContext przełącznik "Switch.System.Activities.UseSHA1HashForDebuggerSymbols" na true. W kodzie:

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

Lub w konfiguracji:

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
  </runtime>
</configuration>
Nazwa/nazwisko Wartość
Zakres Mały
Wersja 4.8
Typ Przekierowanie

Definicje XOML przepływu pracy i klucze pamięci podręcznej SqlTrackingService zmieniły się z MD5 na SHA256

Szczegóły

Środowisko uruchomieniowe przepływu pracy w programie przechowuje pamięć podręczną definicji przepływu pracy zdefiniowanych w języku XOML. Usługa SqlTrackingService przechowuje również pamięć podręczną, która jest kluczem ciągów. Te pamięci podręczne są kluczem wartości, które zawierają wartość skrótu sumy kontrolnej. W programie .NET Framework 4.7.2 i starszych wersjach ten skrót sumy kontrolnej używał algorytmu MD5, co spowodowało problemy z systemami obsługującymi standard FIPS. Począwszy od programu .NET Framework 4.8, używany algorytm to SHA256. Nie powinno występować problem ze zgodnością z tą zmianą, ponieważ wartości są ponownie obliczane za każdym razem, gdy środowisko uruchomieniowe przepływu pracy i usługa SqlTrackingService zostaną uruchomione. Udostępniliśmy jednak dziwactwa, aby umożliwić klientom powrót do użycia starszego algorytmu tworzenia skrótów, jeśli to konieczne.

Sugestia

Jeśli ta zmiana stanowi problem podczas wykonywania przepływów pracy, spróbuj ustawić jeden lub oba AppContext przełączniki:

  • Wartość true to "Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey".
  • Wartość true to "Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey". W kodzie:
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey", true);
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey", true);

Lub w pliku konfiguracji (musi to być w pliku konfiguracji dla aplikacji, która tworzy WorkflowRuntime obiekt):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey=true" />
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKeytrue" />
</runtime>
</configuration>
Nazwa/nazwisko Wartość
Zakres Mały
Wersja 4.8
Typ Przekierowanie

Sumy kontrolne plików XOML przepływu pracy zostały zmienione z MD5 na SHA256

Szczegóły

Aby obsługiwać debugowanie przepływów pracy opartych na XOML za pomocą programu Visual Studio, gdy projekty przepływu pracy zawierające pliki XOML są kompilowane, suma kontrolna zawartości pliku XOML jest uwzględniana w kodzie wygenerowanym WorkflowMarkupSourceAttribute.MD5Digest jako wartość. W programie .NET Framework 4.7.2 i starszych wersjach ten skrót sumy kontrolnej używał algorytmu MD5, co spowodowało problemy z systemami obsługującymi standard FIPS. Począwszy od programu .NET Framework 4.8, używany algorytm to SHA256. Aby zapewnić zgodność z elementem WorkflowMarkupSourceAttribute.MD5Digest, używane są tylko pierwsze 16 bajtów wygenerowanej sumy kontrolnej. Może to spowodować problemy podczas debugowania. Może być konieczne ponowne skompilowanie projektu.

Sugestia

Jeśli ponowne kompilowanie projektu nie rozwiąże problemu, spróbuj ustawić AppContext przełącznik "Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum" na wartość true. W kodzie:

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

Lub w pliku konfiguracji (musi to być w pliku MSBuild.exe.config dla używanej MSBuild.exe):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
Nazwa/nazwisko Wartość
Zakres Mały
Wersja 4.8
Typ Przekierowanie

.NET Framework 4.8.1

W programie .NET Framework 4.8.1 nie wprowadzono żadnych problemów ze zgodnością aplikacji.