<AppContextSwitchOverrides> , element

Definiuje co najmniej jeden przełącznik używany przez klasę AppContext w celu zapewnienia mechanizmu rezygnacji z nowych funkcji.

<konfiguracji>
  <Środowiska wykonawczego>
    <AppContextSwitchOverrides>

Składnia

<AppContextSwitchOverrides value="name1=value1[[;name2=value2];...]" />

Atrybuty i elementy

W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.

Atrybuty

Atrybut opis
value Wymagane. Definiuje co najmniej jedną nazwę przełącznika i skojarzone z nimi wartości logiczne.

value, atrybut

Wartość Opis
"name=value" Wstępnie zdefiniowana nazwa przełącznika wraz z jego wartością (true lub false). Wiele par nazw przełączników/wartości jest rozdzielonych średnikami (";"). Aby uzyskać listę wstępnie zdefiniowanych nazw przełączników obsługiwanych przez program .NET Framework, zobacz sekcję Uwagi.

Elementy podrzędne

Brak.

Elementy nadrzędne

Element opis
configuration Element główny w każdym pliku konfiguracji używanym przez środowisko uruchomieniowe języka wspólnego i aplikacje programu .NET Framework.
runtime Zawiera informacje dotyczące opcji inicjowania środowiska uruchomieniowego.

Uwagi

Począwszy od programu .NET Framework 4.6, element w pliku konfiguracji umożliwia obiektom wywołującym interfejs API określenie, <AppContextSwitchOverrides> czy aplikacja może korzystać z nowych funkcji, czy zachować zgodność z poprzednimi wersjami biblioteki. Jeśli na przykład zachowanie interfejsu API uległo zmianie między dwiema wersjami biblioteki, <AppContextSwitchOverrides> element umożliwia obiektom wywołującym tego interfejsu API rezygnację z nowego zachowania w wersjach biblioteki, które obsługują nowe funkcje. W przypadku aplikacji wywołujących interfejsy API w programie .NET Framework element może również zezwalać obiektom wywołującym, <AppContextSwitchOverrides> których aplikacje są przeznaczone dla wcześniejszej wersji programu .NET Framework, aby wybrać nowe funkcje, jeśli aplikacja jest uruchomiona w wersji programu .NET Framework, która zawiera te funkcje.

Atrybut value<AppContextSwitchOverrides> elementu składa się z jednego ciągu składającego się z co najmniej jednej pary nazw/wartości rozdzielanych średnikami. Każda nazwa identyfikuje przełącznik zgodności, a jego odpowiadająca mu wartość jest wartością logiczną (true lub false), która wskazuje, czy przełącznik jest ustawiony. Domyślnie przełącznik to false, a biblioteki udostępniają nowe funkcje. Zapewniają one tylko poprzednie funkcje, jeśli przełącznik jest ustawiony (czyli jego wartość to true). Dzięki temu biblioteki mogą udostępniać nowe zachowanie dla istniejącego interfejsu API, umożliwiając obiektom wywołującym, którzy zależą od poprzedniego zachowania, aby zrezygnować z nowych funkcji.

Program .NET Framework obsługuje następujące przełączniki:

Nazwa przełącznika opis Wprowadzono
Switch.MS.Internal.
DoNotApplyLayoutRoundingToMarginsAndBorderThickness
Określa, czy program Windows Presentation Foundation używa starszego algorytmu do układu kontrolki. Aby uzyskać więcej informacji, zobacz Środki zaradcze: układ WPF. .NET framework 4.6
Switch.MS.Internal.
UseSha1AsDefaultHashAlgorithmForDigitalSignatures
Określa, czy domyślny algorytm używany do podpisywania części pakietu przez PackageDigitalSignatureManager to SHA1 lub SHA256.
Ze względu na problemy z kolizją z algorytmem SHA1 firma Microsoft zaleca sha256.
.NET Framework 4.7.1
Switch.System.Activities.
UseMD5CryptoServiceProviderForWFDebugger
Gdy jest ustawiona wartość false, umożliwia debugowanie projektów przepływu pracy opartych na języku XAML za pomocą programu Visual Studio po włączeniu protokołu FIPS. Bez niego element NullReferenceException jest zgłaszany w wywołaniach metod w zestawie System.Activities. .NET Framework 4.7
Switch.System.Activities.
UseMD5ForWFDebugger
Określa, czy suma kontrolna wystąpienia przepływu pracy w debugerze używa algorytmu MD5 lub SHA1. .NET Framework 4.7
Switch.System.Activities.
UseSHA1HashForDebuggerSymbols
Określa, czy skrót sumy kontrolnej przepływu pracy używa algorytmu SHA1 wprowadzonego jako domyślny w programie .NET Framework 4.7 (true), czy też używa domyślnego algorytmu SHA256 wprowadzonego jako domyślny w programie .NET Framework 4.8 (false).
Ze względu na problemy z kolizją z algorytmem SHA1 firma Microsoft zaleca sha256.
.NET Framework 4.8
Switch.System.Diagnostics.
IgnorePortablePDBsInStackTraces
Określa, czy ślady stosu są uzyskiwane podczas korzystania z przenośnych plików PDB, mogą zawierać informacje o pliku źródłowym i wierszu. false w celu uwzględnienia pliku źródłowego i informacji o wierszu; w przeciwnym razie, true. .NET Framework 4.7.2
Switch.System.Drawing.
DontSupportPngFramesInIcons
Określa, Icon.ToBitmap czy metoda zgłasza wyjątek, gdy Icon obiekt ma ramki PNG. Aby uzyskać więcej informacji, zobacz Środki zaradcze: ramki PNG w obiektach ikon. .NET framework 4.6
Switch.System.Drawing.Text.
DoNotRemoveGdiFontsResourcesFromFontCollection
Określa, czy System.Drawing.Text.PrivateFontCollection obiekty są prawidłowo usuwane po dodaniu do kolekcji przez metodę PrivateFontCollection.AddFontFile(String) . true zachowanie starszej wersji; false do usuwania wszystkich prywatnych obiektów czcionek. .NET Framework 4.7.2
Switch.System.Drawing.Printing.
OptimizePrintPreview
Określa, czy wydajność PrintPreviewDialog drukarki sieciowej jest zoptymalizowana. Aby uzyskać więcej informacji, zobacz PrintPreviewDialog control overview (Omówienie kontrolki PrintPreviewDialog). .NET framework 4.6
Switch.System.Globalization.EnforceJapaneseEraYearRanges Określa, czy są wymuszane kontrole zakresu lat dla japońskich wymazów kalendarza. true aby wymusić kontrole zakresu lat i false wyłączyć je (zachowanie domyślne). Aby uzyskać więcej informacji, zobacz Praca z kalendarzami. .NET framework 4.6
Switch.System.Globalization.EnforceLegacyJapaneseDateParsing Określa, czy tylko "1" jest rozpoznawany jako pierwszy rok japońskiej ery kalendarza w operacjach analizowania. true rozpoznawanie tylko "1"; false rozpoznawanie wartości "1" lub Gannen (zachowanie domyślne). Aby uzyskać więcej informacji, zobacz Praca z kalendarzami. .NET framework 4.6
Switch.System.Globalization.FormatJapaneseFirstYearAsANumber Określa, czy pierwszy rok ery kalendarza japońskiego jest reprezentowany jako "1" lub Gannen w operacjach formatowania. true aby sformatować pierwszy rok ery jako "1"; false aby sformatować go jako Gannen (zachowanie domyślne). Aby uzyskać więcej informacji, zobacz Praca z kalendarzami. .NET framework 4.6
Switch.System.Globalization.NoAsyncCurrentCulture Określa, czy operacje asynchroniczne nie przepływają z kontekstu wywołującego wątku. Aby uzyskać więcej informacji, zobacz CurrentCulture i CurrentUICulture flow across tasks (Przepływ CurrentCulture i CurrentUICulture między zadaniami). .NET framework 4.6
Switch.System.IdentityModel.
DisableMultipleDNSEntriesInSANCertificate
Określa, X509CertificateClaimSet.FindClaims czy metoda próbuje dopasować typ oświadczenia tylko do ostatniego wpisu DNS. Aby uzyskać więcej informacji, zobacz Środki zaradcze: X509CertificateClaimSet.FindClaims, metoda. .NET Framework 4.6.1
Switch.System.IdentityModel.
EnableCachedEmptyDefaultAuthorizationContext
Określa, czy zezwalać na zwracanie obiektu modyfikowalnego przez element AuthorizationContext.Empty. .NET framework 4.6
Switch.System.IO.BlockLongPaths Określa, czy ścieżki dłuższe niż MAX_PATH (260 znaków) zgłaszają PathTooLongExceptionwartość . Aby uzyskać więcej informacji, zobacz Obsługa długiej ścieżki. .NET Framework 4.6.2
Switch.System.IO.Compression.
DoNotUseNativeZipLibraryForDecompression
Określa, czy natywne procedury systemu operacyjnego są używane do dekompresji przez klasę DeflateStream . false do korzystania z natywnych interfejsów API; true aby użyć implementacji DeflateStream . .NET Framework 4.7.2
Switch.System.IO.Compression.ZipFile.
UseBackslash
Używa ukośnika odwrotnego ("\") zamiast ukośnika do przodu ("/") jako separatora ścieżki ZipArchiveEntry.FullName we właściwości . Aby uzyskać więcej informacji, zobacz Ograniczenia ryzyka: ZipArchiveEntry.FullName Path Separator. .NET Framework 4.6.1
Switch.System.IO.Ports.
DoNotCatchSerialStreamThreadExceptions
Określa, czy wyjątki systemu operacyjnego, które są zgłaszane w wątkach w tle utworzonych strumieniami SerialPort , zakończą proces. .NET Framework 4.7.1
Switch.System.IO.
UseLegacyPathHandling
Określa, czy używana jest starsza normalizacja ścieżki, a ścieżki identyfikatorów URI są obsługiwane przez Path.GetDirectoryName metody i Path.GetPathRoot . Aby uzyskać więcej informacji, zobacz Środki zaradcze: Normalizacja ścieżki i Środki zaradcze: Sprawdzanie dwukropka ścieżki. .NET Framework 4.6.2
Switch.System.
MemberDescriptorEqualsReturnsFalseIfEquivalent
Określa, czy test równości porównuje MemberDescriptor.Category właściwość jednego obiektu z właściwością MemberDescriptor.Description drugiego obiektu. Aby uzyskać więcej informacji, zobacz Niepoprawna implementacja elementu MemberDescriptor.Equals. .NET Framework 4.6.2
Switch.System.Net.
DontCheckCertificateEKUs
Wyłącza walidację identyfikatora obiektu rozszerzonego użycia klucza certyfikatu (EKU). Rozszerzenie rozszerzonego użycia klucza (EKU) to kolekcja identyfikatorów obiektów (OID), które wskazują aplikacje używające klucza. .NET framework 4.6
Switch.System.Net.
DontEnableSchSendAuxRecord
Wyłącza ograniczenie ryzyka protokołu TLS1.0 Browser Exploit Against SSL/TLS (BEAST), wyłączając użycie SCH_SEND_AUX_RECORD. .NET framework 4.6
Switch.System.Net.
DontEnableSchUseStrongCrypto
Określa, czy System.Net.ServicePointManager klasy i System.Net.Security.SslStream mogą używać protokołu SSL 3.0. Aby uzyskać więcej informacji, zobacz Środki zaradcze: protokoły TLS. .NET framework 4.6
Switch.System.Net.
DontEnableSystemDefaultTlsVersions
Wyłącza przywracanie wersji protokołu TLS elementu SystemDefault do wartości domyślnej tls12, Tls11 i Tls. .NET Framework 4.7
Switch.System.Net.
DontEnableTlsAlerts
Wyłącza alerty po stronie serwera SSLStream TLS. .NET Framework 4.7
Switch.System.Runtime.InteropServices.
DoNotMarshalOutByrefSafeArrayOnInvoke
Określa, czy parametry ByRef Sejf Array w zdarzeniach międzyoperacyjności modelu COM są marshaling z powrotem do kodu natywnego (false) lub czy kierowanie z powrotem do kodu natywnego jest wyłączone (true). .NET Framework 4.8
Switch.System.Runtime.Serialization.
DoNotUseECMAScriptV6EscapeControlCharacter
Określa, czy program DataContractJsonSerializer serializuje niektóre znaki sterujące na podstawie standardów ECMAScript V6 i V8. Aby uzyskać więcej informacji, zobacz Środki zaradcze: serializacja znaków kontrolek za pomocą elementu DataContractJsonSerializer .NET Framework 4.7
Switch.System.Runtime.Serialization.
DoNotUseTimeZoneInfo
Określa, czy DataContractJsonSerializer obiekt obsługuje wiele korekt, czy tylko jedną korektę dla strefy czasowej. Jeśli trueparametr używa TimeZoneInfo typu do serializacji i deserializacji danych daty i godziny. W przeciwnym razie używa TimeZone typu , który nie obsługuje wielu reguł korekty. .NET Framework 4.6.2
Switch.System.Runtime.Serialization.UseNewMaxArraySize Określa, czy System.Runtime.Serialization.ObjectManager używa większego rozmiaru tablicy podczas serializacji obiektów i deserializacji. Ustaw ten przełącznik, aby true zwiększyć wydajność serializacji i deserializacji dużych grafów obiektów według typów, takich jak BinaryFormatter. .NET Framework 4.7.2
Switch.System.Security.ClaimsIdentity.
SetActorAsReferenceWhenCopyingClaimsIdentity
Określa, czy ClaimsIdentity(IIdentity) konstruktor ustawia właściwość nowego obiektu ClaimsIdentity.Actor przy użyciu istniejącego odwołania do obiektu. Aby uzyskać więcej informacji, zobacz Środki zaradcze: ClaimsIdentity Konstruktor. .NET Framework 4.6.2
Switch.System.Security.Cryptography.
AesCryptoServiceProvider.DontCorrectlyResetDecryptor
Określa, czy próba ponownego AesCryptoServiceProvider użycia odszyfrowywania zgłasza błąd CryptographicException. Aby uzyskać więcej informacji, zobacz AesCryptoServiceProvider decryptor zapewnia przekształcenie wielokrotnego użytku. .NET Framework 4.6.2
Switch.System.Security.Cryptography.
DoNotAddrOfCspParentWindowHandle
Określa, czy wartość właściwości CspParameters.ParentWindowHandle to IntPtr reprezentująca lokalizację pamięci uchwytu okna, czy też jest to uchwyt okna (HWND). Aby uzyskać więcej informacji, zobacz Środki zaradcze: CspParameters.ParentWindowHandle oczekuje HWND. .NET Framework 4.7
Switch.System.Security.Cryptography.
UseLegacyFipsThrow
Określa, czy użycie zarządzanych klas kryptograficznych w trybie FIPS zgłasza CryptographicException wartość (true) lub opiera się na implementacji bibliotek systemowych (false). .NET Framework 4.8
Switch.System.Security.Cryptography.Pkcs.
UseInsecureHashAlgorithms
Określa, czy wartością domyślną niektórych operacji SignedCMS jest SHA1 czy SHA256.
Ze względu na problemy z kolizją z algorytmem SHA1 firma Microsoft zaleca sha256.
.NET Framework 4.7.1
Switch.System.Security.Cryptography.X509Certificates.
ECDsaCertificateExtensions.UseLegacyPublicKeyReader
Określa, czy ECDsaCertificateExtensions.GetECDsaPublicKey metoda prawidłowo obsługuje wszystkie nazwane krzywe obsługiwane przez system operacyjny (false) lub przywraca starsze zachowanie. .NET Framework 4.8
Switch.System.Security.Cryptography.Xml.
UseInsecureHashAlgorithms
Określa, czy wartością domyślną niektórych operacji SignedXML jest SHA1 czy SHA256.
Ze względu na problemy z kolizją z algorytmem SHA1 firma Microsoft zaleca sha256.
.NET Framework 4.7.1
Switch.System.ServiceModel.
AllowUnsignedToHeader
Określa, TransportWithMessageCredential czy tryb zabezpieczeń zezwala na komunikaty z niepodpisanym nagłówkiem "do". Jest to przełącznik zgody. Aby uzyskać więcej informacji, zobacz Zmiany środowiska uruchomieniowego w programie .NET Framework 4.6.1. .NET Framework 4.6.1
Switch.System.ServiceModel.
DisableAddressHeaderCollectionValidation>
Określa, AddressHeaderCollection(IEnumerable<AddressHeader>) czy konstruktor zgłasza wyjątek ArgumentException , jeśli jeden z elementów to null. .NET Framework 4.7.1
Switch.System.IdentityModel.
DisableCngCertificates
Określa, czy próba użycia certyfikatów X509 z dostawcą magazynu kluczy CSG zgłasza wyjątek. Aby uzyskać więcej informacji, zobacz Zabezpieczenia transportu WCF obsługują certyfikaty przechowywane przy użyciu CNG. .NET Framework 4.6.1
Switch.System.ServiceModel.
DisableExplicitConnectionCloseHeader
W przypadku korzystania z transportu HTTP z samoobsługą ustawienie tej wartości true powoduje, że program WCF ignoruje aplikację dodającą Connection: close nagłówek do nagłówków odpowiedzi dla żądania. Ustawienie tej wartości w celu false włączenia dodawania nagłówka Connection: close do nagłówków odpowiedzi, co powoduje zamknięcie gniazda żądania po wysłaniu odpowiedzi. .NET framework 4.6
Switch.System.ServiceModel.
DisableOperationContextAsyncFlow
Obsługuje zakleszczenia, które wynikają z ograniczenia wystąpień ponownego uczestnika usługi do pojedynczego wątku wykonywania w danym momencie. .NET Framework 4.6.2
Switch.System.ServiceModel.
DisableUsingServicePointManagerSecurityProtocols
Wraz z Switch.System.Net.DontEnableSchUseStrongCryptoprogramem określa, czy zabezpieczenia komunikatów programu WCF używają protokołów TLS 1.1 i TLS 1.2. .NET Framework 4.7
Switch.System.ServiceModel.
DontEnableSystemDefaultTlsVersions
Wartość false ustawia domyślną konfigurację, aby umożliwić systemowi operacyjnemu wybranie protokołu. Wartość true ustawia wartość domyślną na najwyższy dostępny protokół. (Dostępne również w gałęzi obsługi poprzednich wersji platformy) .NET Framework 4.7.1
Switch.System.ServiceModel.
UseSha1InMsmqEncryptionAlgorithm
Określa, czy domyślny algorytm podpisywania komunikatów dla komunikatów MSMQ w programie WCF to SHA1 lub SHA256.
Ze względu na problemy z kolizją z algorytmem SHA1 firma Microsoft zaleca sha256.
.NET Framework 4.7.1
Switch.System.ServiceModel.
UseSha1InPipeConnectionGetHashAlgorithm
Określa, czy program WCF używa skrótu SHA1, czy SHA256 do generowania losowych nazw nazwanych potoków.
Ze względu na problemy z kolizją z algorytmem SHA1 firma Microsoft zaleca sha256.
.NET Framework 4.7.1
Switch.System.ServiceModel.Internals
IncludeNullExceptionMessageInETWTrace
Określa, czy zgłaszać wyjątek NullReferenceException , gdy komunikat o wyjątku ma wartość null. .NET Framework 4.7
Switch.System.ServiceProcess.
DontThrowExceptionsOnStart
Określa, czy wyjątki zgłaszane podczas uruchamiania usługi są propagowane do obiektu wywołującego ServiceBase.Run metody . .NET Framework 4.7.1
Switch.System.Threading.UseNetCoreTimer Określa, czy Timer wystąpienia korzystają z ulepszeń wydajności w środowiskach o dużej skali. Jeśli truefunkcja , zostaną włączone ulepszenia wydajności; jeśli false (wartość domyślna), zostaną wyłączone. .NET Framework 4.8
Switch.System.Uri.
DontEnableStrictRFC3986ReservedCharacterSets
Określa, czy niektóre znaki zakodowane w procentach, które były czasami dekodowane, są teraz spójnie zakodowane w lewo. Jeśli trueparametr jest zdekodowany; w przeciwnym razie false. .NET Framework 4.7.2
Switch.System.Uri.
DontKeepUnicodeBidiFormattingCharacters
Określa obsługę znaków dwukierunkowych Unicode w identyfikatorach URI. true aby usunąć je z identyfikatorów URI; false aby je zachować i zakodować procent. .NET Framework 4.7.2
Switch.System.Windows.Controls.Grid.
StarDefinitionsCanExceedAvailableSpace
Określa, czy program Windows Presentation Foundation stosuje stary algorytm (true) lub nowy algorytm (false) przydzielając miejsce do *-kolumn. Aby uzyskać więcej informacji, zobacz Środki zaradcze: alokacja miejsca kontrolki siatki do kolumn gwiazd. .NET Framework 4.7
Switch.System.Windows.Controls.TabControl.
SelectionPropertiesCanLagBehindSelectionChangedEvent
Określa, czy selektor lub kontrolka karty zawsze aktualizuje wartość wybranej właściwości wartości przed podniesieniem zdarzenia zmienionego zaznaczenia. .NET Framework 4.7.1
Switch.System.Windows.Controls.Text.
UseAdornerForTextboxSelectionRendering
Określa, czy renderowanie zaznaczenia nienależące do modułu Adorner jest dostępne dla TextBox kontrolek i PasswordBox , aby zapobiec okludowaniu tekstu (false), czy też tekst jest renderowany tylko w warstwie Adorner (true). .NET Framework 4.7.2
Switch.System.Windows.Data.Binding.
IListIndexerHidesCustomIndexer
Określa, czy niestandardowe indeksatory IList są niepoprawnie (true) lub poprawnie (false) przez klasę System.Windows.Data.Binding . .NET Framework 4.8
Switch.System.Windows.DoNotScaleForDpiChanges Określa, czy zmiany DPI występują w poszczególnych systemach (wartość false) lub na monitor (wartość true). .NET Framework 4.6.2
Switch.System.Windows.
DoNotUsePresentationDpiCapabilityTier2OrGreater
Określa, czy ulepszenia określania rozmiaru kontrolek w System.Windows.Interop.HwndHost programie WPF są uruchamiane w trybie obsługującym monitor, są wyłączone (true) lub włączone (false). .NET Framework 4.8
Switch.System.Windows.Forms.
DisconnectUiaProvidersOnWmDestroy
Określa, czy dostawcy są rozłączni, gdy odpowiednie okno sterowania zostanie zniszczone () lubtrue nie (false). Ten przełącznik zapewnia zgodę na poprawkę wydajności w celu rozwiązania problemu wycieku IRawElementProviderSimple obiektów. .NET Framework 4.8
Switch.System.Windows.Forms.
DomainUpDown.UseLegacyScrolling
Określa, czy deweloper musi specjalnie obsługiwać akcję w przypadku obecności tekstu sterującego DomainUpDown.UpButton() . true do obsługi UpButton() akcji; false aby akcje DomainUpDown.UpButton() i DomainUpDown.DownButton() były prawidłowo zsynchronizowane. .NET Framework 4.7.2
Switch.System.Windows.Forms.
DontSupportReentrantFilterMessage
Rezygnacja z kodu, który umożliwia implementacji niestandardowej IMessageFilter.PreFilterMessage bezpieczne filtrowanie komunikatów bez zgłaszania wyjątku, gdy metoda jest wywoływana Application.FilterMessage . Aby uzyskać więcej informacji, zobacz Środki zaradcze: Niestandardowe implementacje IMessageFilter.PreFilterMessage. .NET Framework 4.6.1
Switch.System.Windows.Forms.
UseLegacyContextMenuStripSourceControlValue
Określa, czy ContextMenuStrip.SourceControl właściwość zwraca kontrolkę źródła, gdy użytkownik otwiera menu z zagnieżdżonej ToolStripMenuItem kontrolki. true aby powrócić null, starsze zachowanie; false aby zwrócić kontrolę źródła. .NET Framework 4.7.2
Switch.System.Windows.Forms.UseLegacyToolTipDisplay Określa, czy obsługa wywołań etykietek narzędzi jest wyłączona (true) czy włączona (false). Włączenie obsługi wywołania etykietek narzędzi wymaga również starszych funkcji ułatwień dostępu zdefiniowanych przez Switch.UseLegacyAccessibilityFeaturesSwitch.UseLegacyAccessibilityFeatures.2, i Switch.UseLegacyAccessibilityFeatures.3 wszystkie muszą zostać wyłączone (ustawiona na falsewartość ). .NET Framework 4.8
Switch.System.Windows.Input.Stylus.
EnablePointerSupport
Określa, czy opcjonalny WM_POINTERstos touch/stylus jest włączony w aplikacjach WPF. Aby uzyskać więcej informacji, zobacz Środki zaradcze: obsługa dotyku opartego na wskaźniku i stylu .NET Framework 4.7
Switch.System.Windows.Markup.
DoNotUseSha256ForMarkupCompilerChecksumAlgorithm
Określa, czy domyślny algorytm wyznaczania wartości skrótu używany dla sum kontrolnych to SHA256 (false) lub SHA1 (true).
Ze względu na problemy z kolizją z algorytmem SHA1 firma Microsoft zaleca sha256.
.NET Framework 4.7.2
Switch.System.Windows.Media.ImageSourceConverter.
OverrideExceptionWithNullReferenceException
Określa, czy jest zgłaszana starsza wersja nullReferenceException zamiast wyjątku, który dokładniej wskazuje przyczynę wyjątku (na przykład DirectoryNotFoundException lub FileNotFoundException. Jest przeznaczony do użycia przez kod, który zależy od obsługi wyjątku NullReferenceException. .NET Framework 4.7
Switch.System.Workflow.ComponentModel.
UseLegacyHashForXomlFileChecksum
Określa, czy skrót sumy kontrolnej plików XOML w kompilacjach projektu przepływu pracy używa algorytmu MD5 (true), czy też używa algorytmu SHA256 wprowadzonego jako wartość domyślna w programie .NET Framework 4.8.
Ze względu na problemy z kolizją z md5 firma Microsoft zaleca sha256.
.NET Framework 4.8
Switch.System.Workflow.Runtime.
UseLegacyHashForSqlTrackingCacheKey
Określa, czy skrót sumy kontrolnej przez usługę SqlTrackingService używa algorytmu MD5 (true) dla ciągów buforowanych, czy też używa algorytmu SHA256 wprowadzonego jako wartość domyślna w programie .NET Framework 4.8.
Ze względu na problemy z kolizją z md5 firma Microsoft zaleca sha256.
.NET Framework 4.8
Switch.System.Workflow.Runtime.
UseLegacyHashForWorkflowDefinitionDispenserCacheKey
Określa, czy skrót sumy kontrolnej przez środowisko uruchomieniowe przepływu pracy używa algorytmu MD5 (true) dla definicji buforowanego przepływu pracy, czy też używa algorytmu SHA256 wprowadzonego jako domyślny w programie .NET Framework 4.8.
Ze względu na problemy z kolizją z md5 firma Microsoft zaleca sha256.
.NET Framework 4.8
Switch.UseLegacyAccessibilityFeatures Określa, czy funkcje ułatwień dostępu dostępne począwszy od programu .NET Framework 4.7.1 są włączone lub wyłączone. .NET Framework 4.7.1
Switch.UseLegacyAccessibilityFeatures.2 Określa, czy funkcje ułatwień dostępu dostępne w programie .NET Framework 4.7.2 są włączone (false) lub wyłączone (true). Jeśli trueprogram Switch.UseLegacyAccessibilityFeatures musi również true włączyć funkcje ułatwień dostępu programu .NET Framework 4.7.1. .NET Framework 4.7.2
Switch.UseLegacyAccessibilityFeatures.3 Określa, czy funkcje ułatwień dostępu wprowadzone w programie .NET Framework 4.8 są włączone (false) lub wyłączone (true). Jeśli trueparametr i Switch.UseLegacyAccessibilityFeatures.2Switch.UseLegacyAccessibilityFeatures musi również mieć wartość true. .NET Framework 4.8
Switch.UseLegacyToolTipDisplay Określa, czy etykietki narzędzi są wyświetlane, gdy użytkownik najecha kursorem myszy na kontrolkę WPF (true) lub czy są wyświetlane zarówno na fokusie klawiatury, jak i za pomocą klawisza skrótu klawiaturowego (falsezachowanie domyślne). W przypadku aplikacji działających w programie .NET Framework 4.8, ale przeznaczonych dla poprzednich wersji programu .NET Framework, włączenie obsługi fokusu klawiatury i klawisza skrótu wymaga ustawienia Switch.UseLegacyAccessibilityFeatures, Switch.UseLegacyAccessibilityFeatures.2i Switch.UseLegacyAccessibilityFeatures.3 wszystkie wartości false. .NET Framework 4.8
Switch.System.Xml.
IgnoreEmptyKeySequences
Określa, czy puste sekwencje kluczy w kluczach złożonych są ignorowane przez walidację schematu XSD. Aby uzyskać więcej informacji, zobacz Środki zaradcze: weryfikacja schematu XML. .NET framework 4.6

Uwaga

Zamiast dodawać AppContextSwitchOverrides element do pliku konfiguracji aplikacji, można również ustawić przełączniki programowo, wywołując metodę AppContext.SetSwitch .

Deweloperzy bibliotek mogą również definiować przełączniki niestandardowe, aby umożliwić obiektom wywołującym rezygnację ze zmienionych funkcji wprowadzonych w nowszych wersjach bibliotek. Aby uzyskać więcej informacji, zobacz klasę AppContext .

Przełączniki w aplikacjach ASP.NET

Aplikację ASP.NET można skonfigurować tak, aby korzystała z ustawień zgodności, dodając element <Dodaj> element do <aplikacji Ustawienia> sekcji pliku web.config.

W poniższym przykładzie użyto <add> elementu , aby dodać dwa ustawienia do <appSettings> sekcji pliku web.config:

<appSettings>
  <add key="AppContext.SetSwitch:Switch.System.Globalization.NoAsyncCurrentCulture" value="true" />
  <add key="AppContext.SetSwitch:Switch.System.Uri.DontEnableStrictRFC3986ReservedCharacterSets" value="true" />
</appSettings>

Przykład

W poniższym przykładzie AppContextSwitchOverrides użyto elementu do zdefiniowania przełącznika zgodności z jedną aplikacją, Switch.System.Globalization.NoAsyncCurrentCulturektóry uniemożliwia przepływ kultury między wątkami w wywołaniach metod asynchronicznych.

<configuration>
   <runtime>
      <AppContextSwitchOverrides value="Switch.System.Globalization.NoAsyncCurrentCulture=true" />
   </runtime>
</configuration>

W poniższym przykładzie użyto AppContextSwitchOverrides elementu do zdefiniowania dwóch przełączników zgodności aplikacji i Switch.System.IO.BlockLongPathsSwitch.System.Globalization.NoAsyncCurrentCulture . Średnik oddziela dwie pary nazw/wartości.

<configuration>
    <runtime>
       <AppContextSwitchOverrides
          value="Switch.System.Globalization.NoAsyncCurrentCulture=true;Switch.System.IO.BlockLongPaths=true" />
    </runtime>
</configuration>

Zobacz też