Změny modulu runtime pro migraci na rozhraní .NET Framework 4.8.x
Tento článek obsahuje seznam problémů s kompatibilitou aplikací, které byly zavedeny v rozhraní .NET Framework 4.8 a 4.8.1.
.NET Framework 4.8
ASP.NET
ASP.NET Oprava zpracování inputAttributes a LabelAttributes pro ovládací prvek WebForms CheckBox
Detaily
U aplikací, které cílí na rozhraní .NET Framework 4.7.2 a starší verze a CheckBox.InputAttributesCheckBox.LabelAttributes které jsou programově přidány do ovládacího prvku WebForms CheckBox , se po zpětném odeslání ztratí. U aplikací, které cílí na rozhraní .NET Framework 4.8 nebo novější verze, se zachovají po zpětném odeslání.
Návrh
Správné chování pro obnovení atributů v postbacku nastavte targetFrameworkVersion
na hodnotu 4,8 nebo vyšší. Příklad:
<configuration>
<system.web>
<httpRuntime targetFramework="4.8"/>
</system.web>
</configuration>
Nastavení na nižší nebo vůbec nezachová staré nesprávné chování.
Jméno | Hodnota |
---|---|
Obor | Neznámý |
Verze | 4.8 |
Typ | Šablona běhového prostředí |
Ovlivněná rozhraní API
ASP.NET nesprávné zpracování více částí může vést ke ztrátě dat formuláře.
Detaily
V aplikacích, které cílí na rozhraní .NET Framework 4.7.2 a starší verze, ASP.NET mohou nesprávně parsovat hodnoty hranic s více částmi, což vede k nedostupnosti dat formuláře během provádění požadavku. Aplikace, které cílí na rozhraní .NET Framework 4.8 nebo novější verze, správně parsují data s více částmi, takže hodnoty formulářů jsou k dispozici během provádění požadavku.
Návrh
Počínaje aplikacemi spuštěnými v rozhraní .NET Framework 4.8 při cílení na rozhraní .NET Framework 4.8 nebo novější pomocí elementu targetFrameworkVersion
se výchozí chování změní na oddělovače pruhů. Při cílení na předchozí verze architektury nebo použití targetFrameworkVersion
, koncové oddělovače pro některé hodnoty jsou stále vráceny.
Toto chování lze také explicitně řídit pomocí appSetting
:
<configuration>
<appSettings>
...
<add key="aspnet:UseLegacyMultiValueHeaderHandling" value="true"/>
...
</appSettings>
</configuration>
Jméno | Hodnota |
---|---|
Obor | Neznámý |
Verze | 4.8 |
Typ | Šablona běhového prostředí |
Ovlivněná rozhraní API
ASP.NET ValidationContext.MemberName nemá hodnotu NULL při použití vlastní hodnoty DataAnnotations.ValidationAttribute
Detaily
V rozhraní .NET Framework 4.7.2 a starších verzích při použití vlastního System.ComponentModel.DataAnnotations.ValidationAttributerozhraní ValidationContext.MemberName vrátí null
vlastnost . V rozhraní .NET Framework 4.8 verze před aktualizací z října 2019 vrátí název člena. Počínaje rozhraním .NET Framework říjen 2019 ve verzi Preview kumulativní aktualizace pro zvýšení kvality pro .NET Framework 4.8 se vrátí null
ve výchozím nastavení, ale místo toho se můžete přihlásit k vrácení názvu člena.
Návrh
Do souboru web.config pro vlastnost přidejte následující nastavení, které vrátí název člena v rozhraní .NET Framework říjen 2019 Preview kumulativní aktualizace pro zvýšení kvality pro .NET Framework 4.8 a novější verze:
<configuration>
<appSettings>
...
<add key="aspnet:GetValidationMemberName" value="true"/>
...
</appSettings>
</configuration>
V rozhraní .NET Framework 4.8 verze před aktualizací z října 2019 toto přidání do souboru web.config obnoví předchozí chování a vlastnost vrátí null
.
Jméno | Hodnota |
---|---|
Obor | Neznámý |
Verze | 4.8 |
Typ | Šablona běhového prostředí |
Ovlivněná rozhraní API
Základ
.NET COM úspěšně zařazuje ByRef Sejf Array parametry u událostí
Detaily
V rozhraní .NET Framework 4.7.2 a starších verzích by parametr ByRef Sejf Array v události COM se nepodařilo zařadit zpět do nativního kódu. Při této změně je nyní Sejf Array úspěšně zařazován.
- [ x ] Quirked
Návrh
Pokud správně zařazování byRef Sejf Array parametry na událostech modelu COM přeruší provádění, můžete tento kód zakázat přidáním následujícího přepínače konfigurace do konfigurace aplikace:
<appSettings>
<add key="Switch.System.Runtime.InteropServices.DoNotMarshalOutByrefSafeArrayOnInvoke" value="true" />
</appSettings>
Jméno | Hodnota |
---|---|
Obor | Vedlejší |
Verze | 4.8 |
Typ | Šablona běhového prostředí |
Ovlivněná rozhraní API
Nedetekovatelné prostřednictvím analýzy rozhraní API.
Interop .NET teď bude QueryInterface pro IAgileObject (rozhraní WinRT)
Detaily
Při použití události WinRT s delegátem .NET bude Systém Windows QI pro IAgileObject počínaje rozhraním .NET Framework 4.8. V předchozích verzích rozhraní .NET Framework by modul runtime selhal, že QI a událost se nedá přihlásit k odběru.
- [ x ] Quirked
Návrh
Pokud povolení QI pro IAgileObject přeruší provádění, můžete tento kód zakázat nastavením následující konfigurace.
Metoda 1: Proměnná prostředí
Nastavte následující proměnnou prostředí: COMPLUS_DisableCCWSupportIAgileObject=1
Tato metoda ovlivňuje jakékoli prostředí, které dědí tuto proměnnou prostředí. Může se jednat pouze o jednu relaci konzoly nebo může mít vliv na celý počítač, pokud nastavíte proměnnou prostředí globálně. Název proměnné prostředí nerozlišuje malá a velká písmena.
Metoda 2: Registr
Pomocí Editoru registru (regedit.exe) vyhledejte jeden z následujících podklíčů:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework
- HKEY_CURRENT_USER\SOFTWARE\Microsoft.NETFramework
Pak přidejte následující položku:
Název: DisableCCWSupportIAgileObject Type: DWORD (32bitová) hodnota (označovaná také jako REG_DWORD) Data: 1
Tuto hodnotu můžete přidat z příkazového řádku nebo skriptovacího prostředí pomocí nástroje prostředí Windows RE G.EXE. Příklad:
reg add HKLM\SOFTWARE\Microsoft.NETFramework /v DisableCCWSupportIAgileObject /t REG_DWORD /d 1
V tomto případě HKLM
se používá místo HKEY_LOCAL_MACHINE
. Slouží reg add /?
k zobrazení nápovědy k této syntaxi. Název hodnoty registru nerozlišuje velká a malá písmena.
Jméno | Hodnota |
---|---|
Obor | Edge |
Verze | 4.8 |
Typ | Šablona běhového prostředí |
Ovlivněná rozhraní API
Nedetekovatelné prostřednictvím analýzy rozhraní API.
WCF (Windows Communication Foundation)
svcTraceViewer ComboBox s vysokou kontrastní změnou
Detaily
V nástroji Microsoft Service Trace Viewer nebyly ovládací prvky ComboBox zobrazeny ve správné barvě v určitých motivech s vysokým kontrastem. Problém byl opraven v rozhraní .NET Framework 4.7.2. Vzhledem k požadavkům na zpětnou kompatibilitu sady .NET Framework SDK však nebyla oprava ve výchozím nastavení viditelná pro zákazníky. .NET 4.8 tuto změnu zobrazí přidáním následujících konfiguračních přepínačů AppContext do souboru svcTraceViewer.exe.config:
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false" />
Návrh
Pokud nechcete, aby se změnilo chování vysokého kontrastu, můžete ho zakázat odebráním následující části ze souboru svcTraceViewer.exe.config:
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false" />
Jméno | Hodnota |
---|---|
Obor | Edge |
Verze | 4.8 |
Typ | Šablona běhového prostředí |
Ovlivněná rozhraní API
Nedetekovatelné prostřednictvím analýzy rozhraní API.
Windows Presentation Foundation (WPF)
Vylepšení datových vazeb pro KeyedCollection
Detaily
Opravili jsme Binding nesprávné použití indexeru IList, když zdrojový objekt deklaruje vlastní indexer se stejným podpisem (například KeyedCollection<int,TItem>
).
Návrh
Aby aplikace, která cílí na starší verzi, mohla tuto změnu využívat, musí běžet na rozhraní .NET Framework 4.8 nebo novějším a musí se k této změně přihlásit přidáním následujícího přepínače AppContext do <runtime>
části konfiguračního souboru aplikace a nastavením této možnosti:false
<?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.System.Windows.Data.Binding.IListIndexerHidesCustomIndexer=false" />
</runtime>
</configuration>
Jméno | Hodnota |
---|---|
Obor | Hlavní verze |
Verze | 4.8 |
Typ | Šablona běhového prostředí |
Ovlivněná rozhraní API
Nedetekovatelné prostřednictvím analýzy rozhraní API.
Opravili jsme problém, kdy ListBox přestal reagovat, pokud obsahuje duplicitní typy hodnot.
Detaily
Opravili jsme problém, kdy virtualizace ItemsControl během posouvání přestala reagovat, když její Items
kolekce obsahuje duplicitní objekty typu hodnota.
Jméno | Hodnota |
---|---|
Obor | Hlavní verze |
Verze | 4.8 |
Typ | Šablona běhového prostředí |
Ovlivněná rozhraní API
Nedetekovatelné prostřednictvím analýzy rozhraní API.
Vylepšení algoritmu přidělování mezer mezi řádky hvězdicové mřížky
Detaily
Opravili jsme chybu v algoritmu pro přidělování velikostí) v Grid rozhraní .NET Framework 4.7. V některých případech, například mřížka s prázdnými Height="Auto"
řádky, byly řádky uspořádány na nesprávné pozici, pravděpodobně mimo mřížku úplně.
Návrh
Aby aplikace mohla tyto změny využívat, musí běžet v rozhraní .NET Framework 4.8 nebo novějším.
Jméno | Hodnota |
---|---|
Obor | Hlavní verze |
Verze | 4.8 |
Typ | Šablona běhového prostředí |
Ovlivněná rozhraní API
Nedetekovatelné prostřednictvím analýzy rozhraní API.
Vylepšení navigace pomocí klávesnice v ListBoxu s hypertextovými odkazy
Detaily
Opravili jsme nesprávný výsledek stisknutí klávesy se šipkou, když je fokus na hypertextovém odkazu v položce, která není vybranou položkou nadřazené ItemsControlpoložky.
Jméno | Hodnota |
---|---|
Obor | Hlavní verze |
Verze | 4.8 |
Typ | Šablona běhového prostředí |
Ovlivněná rozhraní API
Nedetekovatelné prostřednictvím analýzy rozhraní API.
Vylepšení výkonu ve stromu Automation pro seskupení ItemsControls
Detaily
Vylepšili jsme výkon opětovného sestavení stromu automatizace objektu ItemsControl, například ListBox nebo DataGrid, ve kterém je povolené seskupení.
Jméno | Hodnota |
---|---|
Obor | Hlavní verze |
Verze | 4.8 |
Typ | Šablona běhového prostředí |
Ovlivněná rozhraní API
Nedetekovatelné prostřednictvím analýzy rozhraní API.
.NET Framework 4.8.1
V rozhraní .NET Framework 4.8.1 nebyly zavedeny žádné problémy s kompatibilitou aplikací.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro