Megosztás a következőn keresztül:


Módosítások újratelepítése a .NET-keretrendszer 4.8.x-re

Ez a cikk a 4.8-.NET-keretrendszer és a 4.8.1-ben bevezetett alkalmazáskompatibilitási problémákat sorolja fel.

.NET-keretrendszer 4.8

Alapvető

A felügyelt titkosítási osztályok nem adnak vissza CryptographyException-t FIPS módban

Részletek

A .NET-keretrendszer 4.7.2-s és korábbi verzióiban a felügyelt titkosítási szolgáltatói osztályok, például SHA256ManagedCryptographicException a rendszer titkosítási kódtárainak FIPS módban való konfigurálásakor jelennek meg. Ezek a kivételek azért merülnek fel, mert a felügyelt verziók nem mentek át a FIPS (Federal Information Processing Standards) 140-2 minősítésen, valamint olyan titkosítási algoritmusok blokkolására, amelyek nem tekinthetők a FIPS-szabályok alapján jóváhagyottnak. Mivel kevés fejlesztő rendelkezik FIPS módban a fejlesztői gépekkel, ezeket a kivételeket gyakran csak éles rendszereken használják. A .NET-keretrendszer 4.8-ás és újabb verziót célzó alkalmazások automatikusan átváltanak az újabb, nyugodt szabályzatra, így CryptographicException az ilyen esetekben a rendszer már nem dobja ki alapértelmezés szerint. Ehelyett a felügyelt titkosítási osztályok átirányítják a titkosítási műveleteket egy rendszer kriptográfiai könyvtárba. Ez a szabályzatmódosítás hatékonyan eltávolítja a fejlesztői környezetek és az éles környezetek közötti potenciálisan zavaró különbséget, és a natív összetevőket és a felügyelt összetevőket ugyanazon titkosítási szabályzat alapján működteti.

Javaslat

Ha ez a viselkedés nem kívánatos, leiratkozhat róla, és visszaállíthatja az előző viselkedést, hogy CryptographicException a rendszer FIPS módban dobja el a következő AppContextSwitchOverrides konfigurációs beállítást az <alkalmazáskonfigurációs fájl futtatókörnyezeti> szakaszához:

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

Ha az alkalmazás a 4.7.2-es vagy korábbi .NET-keretrendszer célozza meg, a módosítást úgy is megteheti, hogy hozzáadja a következő AppContextSwitchOverrides konfigurációs beállítást az< alkalmazáskonfigurációs fájl futtatókörnyezeti> szakaszához:

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Név szerint Érték
Hatókör Edge
Verzió 4.8
Típus Újratargeting

Érintett API-k

Windows Forms

Akadálymentességi fejlesztések a .NET 4.8-hoz készült Windows Forms-vezérlőkben

Részletek

A Windows Forms-keretrendszer folyamatosan fejleszti az akadálymentességi technológiák használatát a Windows Forms-ügyfelek jobb támogatása érdekében. Ezek közé tartoznak a következő módosítások:

  • A kontrasztos megjelenítést javító módosítások.
  • A Narrátorsal való interakció változásai.
  • Változások az akadálymentes hierarchiában (a UI-automatizálás fa navigációjának javítása).

Javaslat

Hogyan választhatja ki vagy választhatja ki ezeket a módosításokat Ahhoz, hogy az alkalmazás kihasználhassa ezeket a módosításokat, a .NET-keretrendszer 4.8-on kell futnia. Az alkalmazás az alábbi módokon engedélyezheti ezeket a módosításokat:

  • A .NET-keretrendszer 4.8-at célozza meg újra. Ezek az akadálymentességi módosítások alapértelmezés szerint engedélyezve vannak a .NET-keretrendszer 4.8-at célzó Windows Forms-alkalmazásokban.
  • A .NET-keretrendszer 4.7.2-es vagy korábbi verzióját célozza meg, és az alábbi AppContext-kapcsolót <runtime> hozzáadva az alkalmazáskonfigurációs fájl szakaszához hozzáadja az örökölt akadálymentességi viselkedést, és az alábbi példában látható módon falseazt állítja be.
<?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>

Vegye figyelembe, hogy a .NET-keretrendszer 4.8-ban hozzáadott akadálymentességi funkciókhoz való hozzáféréshez a .NET-keretrendszer 4.7.1 és 4.7.2 kisegítő funkcióit is engedélyeznie kell. Azok az alkalmazások, amelyek a .NET-keretrendszer 4.8-at célják, és meg szeretnék őrizni az örökölt akadálymentességi viselkedést, választhatják az örökölt akadálymentességi funkciók használatát az AppContext kapcsoló trueexplicit beállításával. A billentyűzet elemleírás-hívásának támogatásához hozzá kell adni a sort az Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false AppContextSwitchOverrides értékhez:

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

Vegye figyelembe, hogy a funkció engedélyezéséhez be kell jelentkeznie a .NET-keretrendszer 4.7.1–4.8 fent említett akadálymentességi funkcióihoz. Ha az akadálymentességi funkciók egyikét sem engedélyezi, de az elemleírás megjelenítési funkciója engedélyezve van, a rendszer futásidejű NotSupportedException lesz az első hozzáféréshez ezekhez a funkciókhoz. A kivételüzenet azt jelzi, hogy a billentyűzeteszköz Tippek a 3. szintű akadálymentességi fejlesztések engedélyezését igényli.

Operációs rendszer által definiált színek használata kontrasztos témákban

  • Továbbfejlesztett kontrasztos témák.

Továbbfejlesztett Narrátor-támogatás

Továbbfejlesztett CheckedListBox kisegítő lehetőségek támogatása

  • Továbbfejlesztett Narrátor-támogatás a CheckedListBox vezérlőhöz. Amikor a billentyűzettel navigál a CheckedListBox vezérlőre, a Narrátor összpontosítja az CheckedListBox elemet, és felolvassa.
  • Az üres CheckedListBox vezérlők mostantól fókusz téglalapot rajzolnak egy virtuális első elemhez, amikor a vezérlő fókuszba kerül.

Továbbfejlesztett ComboBox Kisegítő lehetőségek támogatása

  • Engedélyezve UI-automatizálás a vezérlő támogatásaComboBox, UI-automatizálás értesítések és más UI-automatizálás funkciók használatával. Továbbfejlesztett DataGridView kisegítő lehetőségek támogatása

  • Engedélyezett UI-automatizálás vezérlés támogatása DataGridView UI-automatizálás értesítések és egyéb UI-automatizálás funkciók használatával.

  • A UI-automatizálás elem, amely megfelel a DataGridViewComboBoxEditingControl megfelelő szerkesztőcella gyermekének, vagy DataGridViewTextBoxEditingControl most már a megfelelő szerkesztőcellának felel meg.

Továbbfejlesztett LinkLabel kisegítő lehetőségek támogatása

  • Továbbfejlesztett LinkLabel vezérlési akadálymentesség: A Narrátor felolvassa a hivatkozás letiltott állapotát, ha a megfelelő LinkLabel vezérlő le van tiltva.

Továbbfejlesztett progressbar accessibility support

  • Az engedélyezett UI-automatizálás a vezérlő támogatása ProgressBar UI-automatizálás értesítések és más UI-automatizálás funkciók használatával. A fejlesztők mostantól UI-automatizálás értesítéseket használhatnak, amelyeket a Narrátor fel tud jelenteni az előrehaladás jelzésére. A felhasználói felület automatizálási eseményeinek áttekintését, beleértve a felhasználói felület automatizálási értesítési eseményeit, tekintse meg a UI-automatizálás események áttekintését.

Továbbfejlesztett PropertyGrid Kisegítő lehetőségek támogatása

  • Engedélyezve UI-automatizálás a vezérlő támogatásaPropertyGrid, UI-automatizálás értesítések és más UI-automatizálás funkciók használatával.
  • A jelenleg szerkesztett tulajdonságnak megfelelő UI-automatizálás elem mostantól a megfelelő tulajdonságelem UI-automatizálás elem gyermeke.
  • A UI-automatizálás tulajdonságelem mostantól a megfelelő kategóriaelem gyermeke, ha a szülő PropertyGrid vezérlőelem kategórianézetre van állítva.

Továbbfejlesztett ToolStrip-támogatás

  • Engedélyezve UI-automatizálás a vezérlő támogatásaToolStrip, UI-automatizálás értesítések és más UI-automatizálás funkciók használatával.
  • Továbbfejlesztett navigáció az elemek között ToolStrip .
  • Elemek módban a Narrátor fókusza nem tűnik el, és nem kerül rejtett elemekre.

Továbbfejlesztett vizuális jelek

  • Az üres CheckedListBox vezérlőelem ekkor fókuszjelzőt jelenít meg, amikor fókuszt kap. Megjegyzés: A felhasználói felület automatizálásának támogatása futásidőben engedélyezve van a vezérlőkhöz, de a tervezési időben nem használatos. A felhasználói felület automatizálásának áttekintését a UI-automatizálás áttekintésében tekintheti meg.

Vezérlők eszközének meghívása Tippek billentyűzettel

  • A vezérlő elemleírása mostantól meghívható a vezérlő billentyűzettel való összpontosításával. Ezt a funkciót kifejezetten engedélyezni kell az alkalmazás számára (lásd a "Hogyan lehet engedélyezni vagy kivenni ezeket a módosításokat")
Név szerint Érték
Hatókör
Verzió 4.8
Típus Újratargeting

Windows Presentation Foundation (WPF)

Akadálymentességi fejlesztések a WPF-ben

Részletek

Kontrasztos fejlesztések

  • A vezérlő fókusza Expander most már látható. A .NET-keretrendszer korábbi verzióiban nem.
  • A kijelölt szöveg CheckBox és RadioButton vezérlők mostantól könnyebben láthatók, mint az előző .NET-keretrendszer verziókban.
  • A letiltott ComboBox szöveg szegélye mostantól megegyezik a letiltott szöveg színével. A .NET-keretrendszer korábbi verzióiban nem.
  • A letiltott és a szűrt gombok mostantól a megfelelő színt használják. A .NET-keretrendszer korábbi verzióiban nem.
  • Ekkor megjelenik a legördülő gomb, ha egy ComboBox vezérlőelem stílusa be van állítva ToolBar.ComboBoxStyleKey. A .NET-keretrendszer korábbi verzióiban nem.
  • A vezérlőelem rendezési mutatója DataGrid mostantól témaszíneket használ. A .NET-keretrendszer korábbi verzióiban nem.
  • Az alapértelmezett hivatkozásstílus mostantól a megfelelő színre változik az egérmutatón. A .NET-keretrendszer korábbi verzióiban nem.
  • Ekkor megjelenik a billentyűzet fókusza a választógombokon. A .NET-keretrendszer korábbi verzióiban nem.
  • A DataGrid vezérlő jelölőnégyzetoszlopa mostantól a várt színeket használja a billentyűzetfókusz visszajelzéséhez. A .NET-keretrendszer korábbi verzióiban nem.
  • a Billentyűzetfókusz vizualizációk mostantól láthatók és ComboBoxListBox a vezérlők is láthatók. A .NET-keretrendszer korábbi verzióiban nem.

Képernyőolvasó interakciós fejlesztései

  • Expander a képernyőolvasók mostantól helyesen jelentik be csoportként (kibontás/összecsukás) a vezérlőket.
  • DataGridCell a vezérlők mostantól helyesen jelennek meg adatrácscelláként (honosított) a képernyőolvasók számára.
  • A képernyőolvasók ekkor felolvassa a szerkeszthetők ComboBoxnevét.
  • PasswordBox a képernyőolvasók a továbbiakban nem jelentik be a "nincs nézetben" beállítást.

LiveRegion-támogatás

A képernyőolvasók, például a Narrátor, segítenek a felhasználóknak megérteni egy alkalmazás felhasználói felületét (felhasználói felületét), általában a jelenleg fókuszban lévő felhasználói felületi elem leírásával. Ha azonban egy felhasználói felületi elem megváltozik valahol a képernyőn, és nincs rá a fókusz, előfordulhat, hogy a felhasználó nem lesz tájékoztatva, és nem hagyja ki a fontos információkat. A LiveRegions célja a probléma megoldása. A fejlesztő felhasználhatja őket, hogy tájékoztassa a képernyőolvasót vagy bármely más UI-automatizálás ügyfelet arról, hogy fontos módosítás történt egy felhasználói felületi elemen. A képernyőolvasó ezután eldöntheti, hogyan és mikor tájékoztatja a felhasználót erről a változásról. A LiveSetting tulajdonság azt is tudatja a képernyőolvasóval, hogy mennyire fontos a felhasználói felületen végrehajtott módosításról tájékoztatni a felhasználót.

Javaslat

A módosítások elutasítása vagy kimaradás

Ahhoz, hogy az alkalmazás kihasználhassa ezeket a módosításokat, a 4.7.1 vagy újabb .NET-keretrendszer kell futnia. Az alkalmazás a következő módokon használhatja ki ezeket a módosításokat:

  • Cél .NET-keretrendszer 4.7.1. Ez az ajánlott eljárás. Ezek az akadálymentességi módosítások alapértelmezés szerint engedélyezve vannak a 4.7.1-.NET-keretrendszer vagy újabb verziójú WPF-alkalmazásokban.

  • Az alkalmazáskonfigurációs fájl falseszakaszában a következő AppContext Switch hozzáadásával és beállításával kiveheti az örökölt akadálymentességi viselkedést, ahogy az az alábbi példában <runtime> látható.

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

Azok az alkalmazások, amelyek .NET-keretrendszer 4.7.1 vagy újabb verziót céloznak meg, és meg szeretnék őrizni az örökölt akadálymentességi viselkedést, választhatják az örökölt akadálymentességi funkciók használatát az AppContext kapcsoló trueexplicit beállításával. A felhasználói felület automatizálásának áttekintése: UI-automatizálás Áttekintés.

Név szerint Érték
Hatókör
Verzió 4.7.1
Típus Újratargeting

Érintett API-k

SelectionTextBrush nyilvános tulajdonság hozzáadása a TextBox/PasswordBox nem adorner kijelöléshez

Részletek

A WPF-alkalmazásokban, amelyek nem adorneralapú szövegkijelölést használnakTextBox, a PasswordBoxfejlesztők mostantól beállíthatják az újonnan hozzáadott SelectionTextBrush tulajdonságot a kijelölt szöveg megjelenítésének módosításához. Alapértelmezés szerint ez a szín a következővel HighlightTextBrushKeyváltozik: . Ha a nem adorneralapú szövegkijelölés nincs engedélyezve, ez a tulajdonság nem tesz semmit.

Javaslat

Ha engedélyezve van a nem adorneralapú szövegkijelölés, a PasswordBox.SelectionTextBrushSelectionTextBrush tulajdonság használatával módosíthatja a kijelölt szöveg megjelenését. Ez az XAML használatával érhető el:

<TextBox SelectionBrush="Red" SelectionTextBrush="White"  SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
Név szerint Érték
Hatókör
Verzió 4.8
Típus Újratargeting

Érintett API-k

A HwndHost most már megfelelően átméretezi a child-HWND-t a DPI-módosítások során

Részletek

A .NET-keretrendszer 4.7.2-s és korábbi verzióiban, amikor a WPF per-Monitor Aware módban lett futtatva, a dpi-módosítások után a beépített HwndHost vezérlők mérete nem volt megfelelő, például amikor az alkalmazásokat egyik monitorról a másikra helyezték át. Ez a javítás biztosítja, hogy a üzemeltetett vezérlők mérete megfelelően legyenek méretezve.

Javaslat

Ahhoz, hogy az alkalmazás kihasználhassa ezeket a módosításokat, a .NET-keretrendszer 4.7.2-es vagy újabb verzióján kell futnia, és ezt a viselkedést úgy kell engedélyeznie, hogy az alkalmazáskonfigurációs fájl falseszakaszában a következő AppContext Kapcsolót állítsa be a következőre, ahogyan az az alábbi példában <runtime> látható.

<?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>
Név szerint Érték
Hatókör
Verzió 4.8
Típus Újratargeting

Windows Workflow Foundation (WF)

Akadálymentességi fejlesztések a Windows Workflow Foundation (WF) munkafolyamat-tervezőjében

Részletek

A Windows Workflow Foundation (WF) munkafolyamat-tervezője fejleszti az akadálymentességi technológiák működését. Ezek a fejlesztések a következő módosításokat tartalmazzák:

  • Egyes vezérlőkben a tabulátorsor balról jobbra, felülről lefelé változik:
  • A korrelációs ablak inicializálása a tevékenység korrelációs adatainak beállításához InitializeCorrelation
  • A , Send, SendReplyés ReceiveReply tevékenységek tartalomdefiníciós ablaka Receive
  • További függvények érhetők el a billentyűzeten:
  • Egy tevékenység tulajdonságainak szerkesztésekor a tulajdonságcsoportok összecsukhatók billentyűzettel, amikor először összpontosítanak.
  • A figyelmeztető ikonok mostantól billentyűzettel is elérhetők.
  • A Tulajdonságok ablak További tulajdonságok gombja mostantól billentyűzettel is elérhető.
  • A billentyűzetfelhasználók mostantól hozzáférhetnek a munkafolyamat Tervező Argumentumok és Változók paneljének fejlécelemeihez.
  • A fókuszban lévő elemek jobb láthatósága, például amikor:
  • Sorok hozzáadása a munkafolyamat-Tervező és tevékenységtervezők által használt adatrácsokhoz.
  • A mezők és SendReply tevékenységek lapozásaReceiveReply.
  • Változók vagy argumentumok alapértelmezett értékeinek beállítása
  • A képernyőolvasók mostantól helyesen felismerhetik a következőt:
  • A munkafolyamat-tervezőben beállított töréspontok.
  • A FlowSwitch<T>, FlowDecisionés CorrelationScope tevékenységek.
  • A tevékenység tartalma Receive .
  • A tevékenység céltípusa InvokeMethod .
  • A Kivétel kombinált lista és a tevékenység Végül szakasza TryCatch .
  • Az Üzenettípus kombinált lista, a Korrelációs inicializálók hozzáadása ablakban lévő elválasztó, a Tartalomdefiníció ablak és a KorrelátesOn defintion ablak az üzenetkezelési tevékenységekben (Receive, , SendSendReplyés ReceiveReply).
  • Állapotgép-áttűnések és áttűnések célhelyei.
  • Megjegyzések és összekötők a tevékenységekhez FlowDecision .
  • A környezet (jobb gombbal kattintva) menüi a tevékenységekhez.
  • A tulajdonságérték-szerkesztők, a Keresés törlése gomb, a Kategória és betűrend szerinti rendezés gomb, valamint a Tulajdonságrács Kifejezésszerkesztő párbeszédpanelje.
  • A munkafolyamat Tervező nagyítási aránya.
  • Az elválasztó a tevékenységekben és Pick a tevékenységekbenParallel.
  • A InvokeDelegate tevékenység.
  • A Szótártevékenységek (Microsoft.Activities.AddToDictionary<TKey,TValue>stb Microsoft.Activities.RemoveFromDictionary<TKey,TValue>.) Típusok kiválasztása ablaka.
  • A Tallózás és a .NET-típus kiválasztása ablak.
  • A munkafolyamat Tervező.
  • A kontrasztos témákat választó felhasználók számos fejlesztést láthatnak a Munkafolyamat Tervező és vezérlőinek láthatóságában, például az elemek közötti jobb kontrasztarányt és a fókuszelemekhez használt észrevehetőbb kijelölési mezőket.

Javaslat

Ha egy újra üzemeltetett munkafolyamat-tervezővel rendelkező alkalmazással rendelkezik, az alkalmazás az alábbi műveletek végrehajtásával élvezheti ezeket a módosításokat:

  • Az alkalmazás újrafordítása a .NET-keretrendszer 4.7.1-re. Ezek az akadálymentességi módosítások alapértelmezés szerint engedélyezve vannak.
  • Ha az alkalmazás a .NET-keretrendszer 4.7-es vagy korábbi verziót célozza meg, de a .NET-keretrendszer 4.7.1-es verzióján fut, az alábbi AppContext-kapcsolót hozzáadva az app.config fájl szakaszához <runtime> hozzáadhatja ezeket az örökölt akadálymentességi viselkedéseket, és beállíthatja azt falseaz alábbi példában látható módon.
<?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>

Azok az alkalmazások, amelyek a .NET-keretrendszer 4.7.1-re vagy újabb verzióra irányulnak, és meg szeretnék őrizni az örökölt akadálymentességi viselkedést, választhatják az örökölt akadálymentességi funkciók használatát az AppContext kapcsoló trueexplicit beállításával.

Név szerint Érték
Hatókör Kisebb
Verzió 4.7.1
Típus Újratargeting

Sha1-ről SHA256-ra módosult szimbólumok munkafolyamat XAML-ellenőrzőösszegei

Részletek

A Visual Studióval végzett hibakeresés támogatásához a Munkafolyamat-futtatókörnyezet ellenőrzőösszeget hoz létre egy munkafolyamat XAML-fájljához kivonatoló algoritmus használatával. A .NET-keretrendszer 4.6.2-s és korábbi verzióiban a munkafolyamat-ellenőrzőösszeg kivonatolása az MD5 algoritmust használta, ami a FIPS-kompatibilis rendszerek problémáit okozta. A .NET-keretrendszer 4.7-től kezdve az alapértelmezett algoritmus SHA1-re módosult. A .NET-keretrendszer 4.8-tól kezdve az alapértelmezett algoritmus SHA256-ra módosult.

Javaslat

Ha a kód egy ellenőrzőösszeg hibája miatt nem tudja betölteni a munkafolyamat-példányokat, vagy nem talál megfelelő szimbólumokat, állítsa AppContext a kapcsolót a "Switch.System.Activities.UseSHA1HashForDebuggerSymbols" értékre true. Kódban:

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

Vagy konfigurációban:

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
  </runtime>
</configuration>
Név szerint Érték
Hatókör Kisebb
Verzió 4.8
Típus Újratargeting

A munkafolyamat XOML-definíciója és az SqlTrackingService gyorsítótárkulcsai MD5-ről SHA256-ra módosultak

Részletek

A munkafolyamat-futtatókörnyezet a XOML-ben definiált munkafolyamat-definíciók gyorsítótárát tárolja. Az SqlTrackingService a sztringek által kulcsolt gyorsítótárat is megőrzi. Ezek a gyorsítótárak olyan értékek alapján vannak kulcsra adva, amelyek tartalmazzák az ellenőrzőösszeg kivonatának értékét. A .NET-keretrendszer 4.7.2-ben és a korábbi verziókban ez az ellenőrzőösszeg-kivonatolás az MD5 algoritmust használta, ami problémákat okozott a FIPS-kompatibilis rendszereken. A .NET-keretrendszer 4.8-tól kezdve a használt algoritmus az SHA256. Ezzel a módosítással nem lehet kompatibilitási probléma, mert a munkafolyamat-futtatókörnyezet és az SqlTrackingService minden indításakor újraszámítja az értékeket. Azonban olyan furcsaságokat biztosítunk, amelyek lehetővé teszik az ügyfelek számára, hogy szükség esetén visszatérjenek az örökölt kivonatolási algoritmus használatára.

Javaslat

Ha ez a módosítás problémát okoz a munkafolyamatok végrehajtásakor, próbálkozzon az egyik vagy mindkét kapcsoló beállításával AppContext :

  • "Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey" értékre igaz.
  • "Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey" értéke igaz. Kódban:
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey", true);
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey", true);

Vagy a konfigurációs fájlban (ennek az objektumot létrehozó WorkflowRuntime alkalmazás konfigurációs fájljában kell lennie):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey=true" />
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKeytrue" />
</runtime>
</configuration>
Név szerint Érték
Hatókör Kisebb
Verzió 4.8
Típus Újratargeting

A munkafolyamat XOML-fájl ellenőrzőösszegei MD5-ről SHA256-ra módosultak

Részletek

Az XOML-alapú munkafolyamatok Visual Studióval való hibakeresésének támogatásához XOML-fájlokat tartalmazó munkafolyamat-projektek létrehozásakor az XOML-fájl tartalmának ellenőrzőösszege szerepel az értékként WorkflowMarkupSourceAttribute.MD5Digest létrehozott kódban. A .NET-keretrendszer 4.7.2-ben és a korábbi verziókban ez az ellenőrzőösszeg-kivonatolás az MD5 algoritmust használta, ami problémákat okozott a FIPS-kompatibilis rendszereken. A .NET-keretrendszer 4.8-tól kezdve a használt algoritmus az SHA256. A WorkflowMarkupSourceAttribute.MD5Digesttel való kompatibilitás érdekében a rendszer csak a létrehozott ellenőrzőösszeg első 16 bájtját használja. Ez problémákat okozhat a hibakeresés során. Előfordulhat, hogy újra kell építenie a projektet.

Javaslat

Ha a projekt újraépítése nem oldja meg a problémát, állítsa AppContext a "Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum" kapcsolót igaz értékre. Kódban:

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

Vagy egy konfigurációs fájlban (ennek a használt MSBuild.exe MSBuild.exe.config fájljában kell lennie):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
Név szerint Érték
Hatókör Kisebb
Verzió 4.8
Típus Újratargeting

.NET-keretrendszer 4.8.1

A .NET-keretrendszer 4.8.1-ben nem jelentek meg alkalmazáskompatibilitási problémák.