Runtime-Änderungen für die Migration von .NET Framework 4.5.1 zu 4.6.1Runtime Changes for Migration from .NET Framework 4.5.1 to 4.6.1

Wenn Sie von .NET Framework 4.5.1 zu 4.6.1 migrieren, finden Sie in den folgenden Abschnitten weitere Informationen zu den Anwendungskompatibilitätsproblemen, die sich möglicherweise auf Ihre App auswirken können:If you are migrating from the .NET Framework 4.5.1 to 4.6.1, review the following topics for application compatibility issues that may affect your app:

ASP.NETASP.NET

ASP.NET MVC versieht jetzt Leerzeichen in Zeichenfolgen, die über Routenparameter übergeben werden, mit EscapezeichenASP.NET MVC now escapes spaces in strings passed in via route parameters

DetailsDetails

Um RFC 2396 zu entsprechen, werden Leerzeichen in Routenpfaden jetzt beim Auffüllen der Aktionsparameter von einer Route mit Escapezeichen versehen.In order to conform to RFC 2396, spaces in route paths are now escaped when populating action parameters from a route. Während /controller/action/some data zuvor mit der Route /controller/action/{data} übereinstimmte und some data als Datenparameter bereitgestellt wurde, stellt sie daher jetzt some%20data bereit.So, whereas /controller/action/some data would previously match the route /controller/action/{data} and provide some data as the data parameter, it will now provide some%20data instead.

VorschlagSuggestion

Der Code sollte aktualisiert werden, um die Escapezeichen der Zeichenfolgenparameter von einer Route zu entfernen.Code should be updated to unescape string parameters from a route. Wenn der ursprüngliche URI erforderlich ist, kann mithilfe der RequestUri.OriginalString-API darauf zugegriffen werden.If the original URI is needed, it can be accessed with the RequestUri.OriginalString API.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.5.24.5.2
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

GridView-Steuerelemente, bei denen „AllowCustomPaging“ auf TRUE festgelegt ist, kann das Ereignis „PageIndexChanging“ ausgelöst werden, wenn die letzte Seite der Ansicht verlassen wirdGridViews with AllowCustomPaging set to true may fire the PageIndexChanging event when leaving the final page of the view

DetailsDetails

Ein Fehler in .NET Framework 4.5 führt dazu, dass System.Web.UI.WebControls.GridView.PageIndexChanging für System.Web.UI.WebControls.GridView-Steuerelemente, bei denen System.Web.UI.WebControls.GridView.AllowCustomPaging nicht aktiviert ist, manchmal nicht ausgelöst wird.A bug in the .NET Framework 4.5 causes System.Web.UI.WebControls.GridView.PageIndexChanging to sometimes not fire for System.Web.UI.WebControls.GridViews that have enabled System.Web.UI.WebControls.GridView.AllowCustomPaging.

VorschlagSuggestion

Dieses Problem wurde in .NET Framework 4.6 behoben und kann durch ein Upgrade auf diese Version von .NET Framework vermieden werden.This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. Das Problem kann umgangen werden, indem die App eine explizite BindGrid-Bindung an eine beliebige Page_Load-Methode durchführt, die diese Bedingungen erfüllt (System.Web.UI.WebControls.GridView befindet sich auf der letzten Seite und LastSystem.Web.UI.WebControls.GridView.PageSize unterscheidet sich von System.Web.UI.WebControls.GridView.PageSize).As a work-around, the app can do an explicit BindGrid on any Page_Load that would hit these conditions (the System.Web.UI.WebControls.GridView is on the last page and LastSystem.Web.UI.WebControls.GridView.PageSize is different from System.Web.UI.WebControls.GridView.PageSize). Alternativ kann die App geändert werden, um Paging (statt benutzerdefiniertem Paging) zuzulassen, da das Problem in diesem Szenario nicht auftritt.Alternatively, the app can be modified to allow paging (instead of custom paging), as that scenario does not demonstrate the problem.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.54.5
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

EnableViewStateMac kann nicht mehr auf FALSE festgelegt werdenNo longer able to set EnableViewStateMac to false

DetailsDetails

In ASP.NET sind die folgenden Angaben nicht mehr erlaubt: <pages enableViewStateMac="false"/> oder <@Page EnableViewStateMac="false" %>.ASP.NET no longer allows developers to specify <pages enableViewStateMac="false"/> or <@Page EnableViewStateMac="false" %>. Der Nachrichtenauthentifizierungscode (MAC) des Ansichtszustands wird nun für alle Anfragen mit eingebettetem Ansichtszustand erzwungen.The view state message authentication code (MAC) is now enforced for all requests with embedded view state. Es sind nur Apps betroffen, die die EnableViewStateMac-Eigenschaft explizit auf false festlegen.Only apps that explicitly set the EnableViewStateMac property to false are affected.

VorschlagSuggestion

Für EnableViewStateMac muss TRUE angenommen werden. Zudem müssen alle sich ergebenden MAC-Fehler aufgelöst werden (wie in dieser Anleitung erläutert, die in Abhängigkeit zu den Besonderheiten, die zu den MAC-Fehlern führen, mehrere Lösungen enthält).EnableViewStateMac must be assumed to be true, and any resulting MAC errors must be resolved (as explained in this guidance, which contains multiple resolutions depending on the specifics of what is causing MAC errors).

nameName WertValue
BereichScope HauptversionMajor
VersionVersion 4.5.24.5.2
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

Profilerstellung für ASP.NET MVC4-Apps kann zu schwerwiegendem Fehler der Ausführungs-Engine führenProfiling ASP.NET MVC4 apps can lead to Fatal Execution Engine Error

DetailsDetails

Profiler, die NGEN- bzw. Profilassemblys verwenden, lösen möglicherweise beim Start von ASP.NET MVC4-Anwendungen mit Profilen einen „schwerwiegenden Fehler der Ausführungs-Engine“ ausProfilers using NGEN /Profile assemblies may crash profiled ASP.NET MVC4 applications on startup with a 'Fatal Execution Engine Exception'

VorschlagSuggestion

Dieses Problem wurde in .NET Framework 4.5.2 behoben.This issue is fixed in the .NET Framework 4.5.2. Der Profiler kann das Problem jedoch umgehen, indem er COR_PRF_DISABLE_ALL_NGEN_IMAGES in der Ereignismaske angibt.Alternatively, the profiler may avoid this issue by specifying COR_PRF_DISABLE_ALL_NGEN_IMAGES in its event mask.

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.54.5
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

KernspeicherCore

Ein in .NET Framework 4.5 mit NetDataContractSerializer serialisiertes ConcurrentDictionary-Element kann nicht von .NET Framework 4.5.1 oder 4.5.2 deserialisiert werdenA ConcurrentDictionary serialized in .NET Framework 4.5 with NetDataContractSerializer cannot be deserialized by .NET Framework 4.5.1 or 4.5.2

DetailsDetails

Aufgrund von Typänderungen können ConcurrentDictionary<TKey,TValue>-Objekte, die unter Verwendung von System.Runtime.Serialization.NetDataContractSerializer mit .NET Framework 4.5 serialisiert werden, nicht in .NET Framework 4.5.1 oder 4.5.2 deserialisiert werden. Beachten Sie jedoch, dass die Serialisierung mit .NET Framework 4.5.x und die Deserialisierung mit .NET Framework 4.5 funktionieren.Due to internal changes to the type, ConcurrentDictionary<TKey,TValue> objects that are serialized with the .NET Framework 4.5 using the System.Runtime.Serialization.NetDataContractSerializer cannot be deserialized in the .NET Framework 4.5.1 or in the .NET Framework 4.5.2.Note that moving in the other direction (serializing with the .NET Framework 4.5.x and deserializing with the .NET Framework 4.5) works. Genauso funktioniert die versionsübergreifende Serialisierung in .NET Framework 4.x mit .NET Framework 4.6. Dies hat keine Auswirkungen auf die (De-)Serialisierung einer einzelnen Version von .NET Framework.Similarly, all 4.x cross-version serialization works with the .NET Framework 4.6.Serializing and deserializing with a single version of the .NET Framework is not affected.

VorschlagSuggestion

Wenn Sie ein System.Collections.Concurrent.ConcurrentDictionary<TKey,TValue>-Element zwischen .NET Framework 4.5 und .NET Framework 4.5.1/4.5.2 (de-)serialisieren müssen, sollten Sie statt System.Runtime.Serialization.NetDataContractSerializer ein Serialisierungsmodul wie System.Runtime.Serialization.DataContractSerializer oder System.Runtime.Serialization.Formatters.Binary.BinaryFormatter verwenden. Das Problem könnte möglicherweise aber auch durch ein Upgrade auf .NET Framework 4.6 gelöst werden, da es in dieser Version behoben wird.If it is necessary to serialize and deserialize a System.Collections.Concurrent.ConcurrentDictionary<TKey,TValue> between the .NET Framework 4.5 and .NET Framework 4.5.1/4.5.2, an alternate serializer like the System.Runtime.Serialization.DataContractSerializer or System.Runtime.Serialization.Formatters.Binary.BinaryFormatter serializer should be used instead of the System.Runtime.Serialization.NetDataContractSerializer.Alternatively, because this issue is addressed in the .NET Framework 4.6, it may be solved by upgrading to that version of the .NET Framework.

NameName WertValue
BereichScope GeringMinor
VersionVersion 4.5.14.5.1
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

AppDomainSetup.DynamicBase wird mithilfe von UseRandomizedStringHashAlgorithm nicht mehr zufällig festgelegtAppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm

DetailsDetails

Vor .NET Framework 4.6 wurde der Wert von DynamicBase für Anwendungsdomänen oder Prozesse zufällig festgelegt, wenn UseRandomizedStringHashAlgorithm in der Konfigurationsdatei der App aktiviert war.Prior to the .NET Framework 4.6, the value of DynamicBase would be randomized between application domains, or between processes, if UseRandomizedStringHashAlgorithm was enabled in the app's config file. Ab .NET Framework 4.6 gibt DynamicBase ein stabiles Ergebnis zurück, das zwischen verschiedenen Instanzen einer ausgeführten App und zwischen verschiedenen App-Domänen besteht.Beginning in the .NET Framework 4.6, DynamicBase will return a stable result between different instances of an app running, and between different app domains. Verschiedene Apps haben auch unterschiedliche dynamische Basen. Diese Änderung entfernt nur die Elemente von verschiedenen Instanzen einer App, die zufällig benannt werden.Dynamic bases will still differ for different apps; this change only removes the random naming element for different instances of the same app.

VorschlagSuggestion

Beachten Sie, dass bei der Aktivierung von UseRandomizedStringHashAlgorithmDynamicBase nicht zufällig festgelegt wird.Be aware that enabling UseRandomizedStringHashAlgorithm will not result in DynamicBase being randomized. Wenn eine zufällige Basis benötigt wird, muss diese im Code Ihrer App anstelle einer API erstellt werden.If a random base is needed, it must be produced in your app's code rather than via this API.

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Der Aufruf von Attribute.GetCustomAttributes für eine Indexereigenschaft löst keine AmbiguousMatchException-Ausnahme mehr aus, wenn die Mehrdeutigkeit durch den Typ des Indexes aufgelöst werden kannCalling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type

DetailsDetails

Vor .NET Framework 4.6 führte der Aufruf von GetCustomAttribute(s) für eine Indexereigenschaft, die sich nur durch den Indextyp von einer anderen Eigenschaft unterschied, zu einer System.Reflection.AmbiguousMatchException.Prior to the .NET Framework 4.6, calling GetCustomAttribute(s) on an indexer property which differed from another property only by the type of the index would result in an System.Reflection.AmbiguousMatchException. Ab .NET Framework 4.6 werden die Attribute der Eigenschaft ordnungsgemäß zurückgegeben.Beginning in the .NET Framework 4.6, the property's attributes will be correctly returned.

VorschlagSuggestion

Beachten Sie, dass „GetCustomAttribute(s)“ jetzt häufiger funktioniert.Be aware that GetCustomAttribute(s) will work more frequently now. Wenn sich eine App zuvor auf System.Reflection.AmbiguousMatchException verlassen hat, sollte jetzt die Reflektion verwendet werden, um stattdessen explizit nach mehreren Indexern zu suchen.If an app was previously relying on the System.Reflection.AmbiguousMatchException, reflection should now be used to explicitly look for multiple indexers, instead.

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

COR_PRF_GC_ROOT_HANDLE-Elemente werden nicht vom Profiler aufgezähltCOR_PRF_GC_ROOT_HANDLEs are not being enumerated by profilers

DetailsDetails

In .NET Framework 4.5.1 gibt die Profilerstellungs-API RootReferences2() fälschlicherweise nie COR_PRF_GC_ROOT_HANDLE zurück (stattdessen wird COR_PRF_GC_ROOT_OTHER zurückgegeben).In the .NET Framework v4.5.1, the profiling API RootReferences2() is incorrectly never returning COR_PRF_GC_ROOT_HANDLE (they are returned as COR_PRF_GC_ROOT_OTHER instead). Dieses Problem ist seit .NET Framework 4.6 behoben.This issue is fixed beginning in the .NET Framework 4.6.

VorschlagSuggestion

Dieses Problem wurde in .NET Framework 4.6 behoben und kann durch ein Upgrade auf diese Version von .NET Framework vermieden werden.This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.5.14.5.1
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

ETW EventListeners erfassen keine Ereignisse von Anbietern mit expliziten Schlüsselwörtern (wie der TPL-Anbieter).ETW EventListeners do not capture events from providers with explicit keywords (like the TPL provider)

DetailsDetails

ETW EventListeners mit leerer Schlüsselwortmaske erfassen Ereignisse von Anbietern mit expliziten Schlüsselwörtern nicht ordnungsgemäß.ETW EventListeners with a blank keyword mask do not properly capture events from providers with explicit keywords. In .NET Framework 4.5 hat der TPL-Anbieter damit begonnen, explizite Schlüsselwörter bereitzustellen und dadurch dieses Problem ausgelöst.In the .NET Framework 4.5, the TPL provider began providing explicit keywords and triggered this issue. In .NET Framework 4.6 wurde „EventListeners“ aktualisiert, damit dieses Problem nicht mehr auftritt.In the .NET Framework 4.6, EventListeners have been updated to no longer have this issue.

VorschlagSuggestion

Wenn Sie dieses Problem umgehen möchten, ersetzen Sie die Aufrufe von EnableEvents(EventSource, EventLevel) durch Aufrufe der EnableEvents-Überladung, die explizit die Maske "any keywords" (beliebige Schlüsselwörter), die verwendet werden soll: EnableEvents(eventSource, level, unchecked((EventKeywords)0xFFFFffffFFFFffff)). Außerdem wurde dieses Problem in .NET Framework 4.6 behoben und kann sich in Ihrem Fall möglicherweise auch durch ein Upgrade auflösen.To work around this problem, replace calls to EnableEvents(EventSource, EventLevel) with calls to the EnableEvents overload that explicitly specifies the "any keywords" mask to use: EnableEvents(eventSource, level, unchecked((EventKeywords)0xFFFFffffFFFFffff)).Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework.

NameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.54.5
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Der persische Kalender verwendet jetzt den Hijri-SolaralgorithmusPersian calendar now uses the Hijri solar algorithm

DetailsDetails

Ab .NET Framework 4.6 verwendet die System.Globalization.PersianCalendar-Klasse den Hijri-Solaralgorithmus.Starting with the .NET Framework 4.6, the System.Globalization.PersianCalendar class uses the Hijri solar algorithm. Das Konvertieren von Datumsangaben zwischen System.Globalization.PersianCalendar und anderen Kalendern erzeugt ab .NET Framework 4.6 für Datumsangaben vor 1800 oder nach 2023 (gregorianisch) möglicherweise ein etwas anderes Ergebnis. Darüber hinaus entspricht PersianCalendar.MinSupportedDateTime nun March 22, 0622 anstatt March 21, 0622.Converting dates between the System.Globalization.PersianCalendar and other calendars may produce a slightly different result beginning with the .NET Framework 4.6 for dates earlier than 1800 or later than 2023 (Gregorian).Also, PersianCalendar.MinSupportedDateTime is now March 22, 0622 instead of March 21, 0622.

VorschlagSuggestion

Beachten Sie, dass einige frühe oder späte Datumsangaben bei der Verwendung des persischen Kalenders in .NET Framework 4.6 möglicherweise etwas anders aussehen.Be aware that some early or late dates may be slightly different when using the PersianCalendar in .NET Framework 4.6. Speichern Sie zudem beim Serialisieren von Daten zwischen Prozessen, die möglicherweise unter verschiedenen Versionen von .NET Framework ausgeführt werden, die Daten nicht als PersionCalendar-Datumszeichenfolgen (da diese Werte abweichen können).Also, when serializing dates between processes which may run on different .NET Framework versions, do not store them as PersianCalendar date strings (since those values may be different).

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Reflection-Objekte können nicht mehr von verwaltetem Code an prozessexterne DCOM-Clients übergeben werdenReflection objects can no longer be passed from managed code to out-of-process DCOM clients

DetailsDetails

Reflection-Objekte können nicht mehr von verwaltetem Code an prozessexterne DCOM-Clients übergeben werden.Reflection objects can no longer be passed from managed code to out-of-process DCOM clients. Die folgenden Typen sind betroffen:The following types are affected:

Aufrufe von IMarshal für das Objekt geben E_NOINTERFACE zurück.Calls to IMarshal for the object return E_NOINTERFACE.

VorschlagSuggestion

Aktualisieren Sie den Marshallingcode, sodass dieser auch mit Nichtreflexionsobjekten funktioniert.Update marshaling code to work with non-reflection objects.

NameName WertValue
BereichScope GeringMinor
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

TargetFrameworkName für die Standardanwendungsdomäne erhält nicht mehr standardmäßig den Wert NULL, wenn kein Wert festgelegt wurdeTargetFrameworkName for default app domain no longer defaults to null if not set

DetailsDetails

System.AppDomainSetup.TargetFrameworkName erhielt bereits in der Standardanwendungsdomäne den Wert NULL, sofern kein Wert explizit festgelegt wurde.The System.AppDomainSetup.TargetFrameworkName was previously null in the default app domain, unless it was explicitly set. Ab Version 4.6 weist die System.AppDomainSetup.TargetFrameworkName-Eigenschaft für die Standardanwendungsdomäne einen Standardwert auf, der von TargetFrameworkAttribute (sofern vorhanden) abgeleitet wird.Beginning in 4.6, the System.AppDomainSetup.TargetFrameworkName property for the default app domain will have a default value derived from the TargetFrameworkAttribute (if one is present). Nicht standardmäßige Anwendungsdomänen erben ihr System.AppDomainSetup.TargetFrameworkName weiterhin von der Standardanwendungsdomäne (die in Version 4.6 nicht standardmäßig auf NULL festgelegt ist), sofern sie nicht explizit außer Kraft gesetzt wird.Non-default app domains will continue to inherit their System.AppDomainSetup.TargetFrameworkName from the default app domain (which will not default to null in 4.6) unless it is explicitly overridden.

VorschlagSuggestion

Der Code sollte aktualisiert werden, um nicht davon abhängig zu sein, dass TargetFrameworkName standardmäßig NULL verwendet.Code should be updated to not depend on TargetFrameworkName defaulting to null. Wenn es erforderlich ist, dass diese Eigenschaft weiterhin zu NULL ausgewertet wird, kann dieser Wert explizit festgelegt werden.If it is required that this property continue to evaluate to null, it can be explicitly set to that value.

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

„X509Certificate2.ToString(Boolean)“ wird jetzt nicht mehr ausgelöst, wenn .NET das Zertifikat nicht verarbeiten kannX509Certificate2.ToString(Boolean) does not throw now when .NET cannot handle the certificate

DetailsDetails

Zuvor wurde diese Methode in .NET Framework 4.5.2 ausgelöst, wenn true für den ausführlichen Parameter übergeben wurde und Zertifikate installiert waren, die von .NET Framework nicht unterstützt wurden.In .NET Framework 4.5.2 and earlier versions, this method would throw if true was passed for the verbose parameter and there were certificates installed that weren't supported by the .NET Framework. Nun wird die Methode erfolgreich ausgeführt und gibt eine gültige Zeichenfolge zurück, die die Teile des Zertifikats auslässt, auf die nicht zugegriffen werden kann.Now, the method will succeed and return a valid string that omits the inaccessible portions of the certificate.

VorschlagSuggestion

Jeder von X509Certificate2.ToString(Boolean) abhängige Code sollte aktualisiert werden, um zu erwarten, dass die zurückgegebene Zeichenfolge einige Zertifikatsdaten in einigen Fällen ausschließt (z.B. den öffentlichen Schlüssel, den privaten Schlüssel und die Erweiterungen), in denen zuvor die API ausgelöst worden wäre.Any code depending on X509Certificate2.ToString(Boolean) should be updated to expect that the returned string may exclude some certificate data (such as public key, private key, and extensions) in some cases in which the API would have previously thrown.

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

DatenData

Der Versuch, eine TCP/IP-Verbindung mit einer SQL Server-Datenbank herzustellen, die zu localhost aufgelöst wird, schlägt fehlAttempting a TCP/IP connection to a SQL Server database that resolves to localhost fails

DetailsDetails

Ab .NET Framework 4.6 und 4.6.1 tritt bei dem Versuch, eine TCP/IP-Verbindung mit einer SQL Server-Datenbank herzustellen, die zu localhost aufgelöst wird, folgender Fehler auf: "A network-related or instance-specific error occurred while establishing a connection to SQL Server.In the .NET Framework 4.6 and 4.6.1, attempting a TCP/IP connection to a SQL Server database that resolves to localhost fails with the error, "A network-related or instance-specific error occurred while establishing a connection to SQL Server. Der Server wurde nicht gefunden oder es konnte nicht auf ihn zugegriffen werden.The server was not found or was not accessible. Stellen Sie sicher, dass der Instanzname richtig und SQL Server so konfiguriert ist, das Remoteverbindungen zulässig sind.Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (Anbieter: SQL-Netzwerkschnittstellen, Fehler: 26 – Fehler beim Auffinden des angegebenen Servers/der angegebenen Instanz)"(provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)"

VorschlagSuggestion

Dieses Problem wurde behoben und das vorherige Verhalten in .NET Framework 4.6.2 wiederhergestellt.This issue has been addressed and the previous behavior restored in the .NET Framework 4.6.2. Führen Sie ein Upgrade auf .NET Framework 4.6.2 durch, um eine Verbindung mit einer SQL Server-Datenbank herzustellen, die zu localhost aufgelöst wird.To connect to a SQL Server database that resolves to localhost, upgrade to the .NET Framework 4.6.2.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

SqlConnection.Open schlägt unter Windows 7 mit vorhandenem Nicht-IFS-Winsock-BSP oder -LSP fehlSqlConnection.Open fails on Windows 7 with non-IFS Winsock BSP or LSP present

DetailsDetails

Auf einem Windows 7-Computer mit einem Nicht-IFS-Winsock-BSP oder -LSP schlagen Open() und OpenAsync(CancellationToken) in .NET Framework 4.5 fehl. Verwenden Sie den Befehl netsh WinSock Show Catalog, und untersuchen Sie alle Winsock Catalog Provider Entry-Elemente, die zurückgegeben werden, um zu erkennen, ob ein Nicht-IFS-Winsock-BSP oder -LSP installiert ist.Open() and OpenAsync(CancellationToken) fail in the .NET Framework 4.5 if running on a Windows 7 machine with a non-IFS Winsock BSP or LSP are present on the computer.To determine whether a non-IFS BSP or LSP is installed, use the netsh WinSock Show Catalog command, and examine every Winsock Catalog Provider Entry item that is returned. Wenn für den Servicekennzeichenwert das 0x20000-Bit gesetzt ist, verwendet der Anbieter IFS-Handle und funktioniert daher ordnungsgemäß.If the Service Flags value has the 0x20000 bit set, the provider uses IFS handles and will work correctly. Wenn das 0x20000-Bit leer (nicht festgelegt) ist, handelt es sich um ein Nicht-IFS-BSP oder -LSP.If the 0x20000 bit is clear (not set), it is a non-IFS BSP or LSP.

VorschlagSuggestion

Dieses Problem wurde in .NET Framework 4.5.2 behoben, daher kann es durch ein Upgrade von .NET Framework vermieden werden.This bug has been fixed in the .NET Framework 4.5.2, so it can be avoided by upgrading the .NET Framework. Alternativ kann es durch Entfernen aller installierten Nicht-IFS-Winsock-LSPs vermieden werden.Alternatively, it can be avoided by removing any installed non-IFS Winsock LSPs.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.54.5
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

DebuggerDebugger

NULL-Zusammenfügungswerte werden erst im nächsten Schritt angezeigtNull coalescer values are not visible in debugger until one step later

DetailsDetails

Durch einen Fehler in .NET Framework 4.5 werden Werte, die über einen zusammenfügenden NULL-Vorgang festgelegt werden, nicht unmittelbar im Anschluss an die Zuweisung im Debugger angezeigt, wenn sie auf einer 64-Bit-Version des Frameworks ausgeführt werden.A bug in the .NET Framework 4.5 causes values set via a null coalescing operation to not be visible in the debugger immediately after the assignment operation is executed when running on the 64-bit version of the Framework.

VorschlagSuggestion

Wenn Sie im Debugger einen zusätzlichen Schritt ausführen, wird der lokale Wert bzw. der Feldwert ohne Probleme aktualisiert.Stepping one additional time in the debugger will cause the local/field's value to be correctly updated. Dieses Problem wurde auch in .NET Framework 4.6 behoben und sollte nach einem Upgrade auf diese Version nicht mehr auftreten.Also, this issue has been fixed in the .NET Framework 4.6; upgrading to that version of the Framework should solve the issue.

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.54.5
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

Entity FrameworkEntity Framework

Entity Framework löst für QueryViews bei bestimmten Zeichen keine Ausnahmen mehr ausEF no longer throws for QueryViews with specific characteristics

DetailsDetails

Entity Framework löst keine System.StackOverflowException-Ausnahme mehr aus, wenn eine App eine Abfrage ausführt, die ein QueryView-Element mit einer 0..1-Navigationseigenschaft umfasst und versucht, die verwandten Entitäten als Teil der Abfrage zu verwenden.Entity Framework no longer throws a System.StackOverflowException exception when an app executes a query that involves a QueryView with a 0..1 navigation property that attempts to include the related entities as part of the query. (Z.B. durch Aufrufen von .Include(e => e.RelatedNavProp).)For example, by calling .Include(e => e.RelatedNavProp).

VorschlagSuggestion

Diese Änderung betrifft nur Code, der QueryViews mit 1-0..1-Beziehungen verwendet, wenn Abfragen ausgeführt werden, die .Include aufrufen.This change only affects code that uses QueryViews with 1-0..1 relationships when running queries that call .Include. Diese Änderung verbessert die Zuverlässigkeit und sollte für beinahe alle Apps transparent sein.It improves reliability and should be transparent to almost all apps. Falls jedoch ein unerwünschtes Verhalten auftritt, können Sie dieses Feature deaktivieren, indem Sie den folgenden Eintrag im <appSettings>-Bereich der Anwendungskonfigurationsdatei einfügen:However, if it causes unexpected behavior, you can disable it by adding the following entry to the <appSettings> section of the app's configuration file:

<add key="EntityFramework_SimplifyUserSpecifiedViews" value="false" />

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.5.24.5.2
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

Aktivierte Unterbrechung zur Wiederherstellung der SQL-Generationen 4.0 oder 4.5Opt-in break to revert from different 4.5 SQL generation to simpler 4.0 SQL generation

DetailsDetails

Abfragen, die JOIN-Anweisungen erzeugen und einen Aufruf an eine Einschränkungsoperation enthalten, ohne zuvor OrderBy zu verwenden, generieren nun einfacheres SQL.Queries that produce JOIN statements and contain a call to a limiting operation without first using OrderBy now produce simpler SQL. Nach dem Upgrade auf .NET Framework 4.5 generieren diese Abfragen komplizierteres SQL als vorherige Versionen.After upgrading to .NET Framework 4.5, these queries produced more complicated SQL than previous versions.

VorschlagSuggestion

Dieses Feature ist standardmäßig deaktiviert.This feature is disabled by default. Wenn Entity Framework zusätzliche JOIN-Anweisungen generiert, die Leistungseinbußen verursachen, können Sie dieses Feature aktivieren, indem Sie den folgenden Eintrag zum <appSettings>-Bereich der Anwendungskonfigurationsdatei (app.config) hinzufügen:If Entity Framework generates extra JOIN statements that cause performance degradation, you can enable this feature by adding the following entry to the <appSettings> section of the application configuration (app.config) file:

<add key="EntityFramework_SimplifyLimitOperations" value="true" />

nameName WertValue
BereichScope TransparentTransparent
VersionVersion 4.5.24.5.2
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

NetzwerkNetworking

Die DateTime-Elemente von „ContentDisposition“ geben eine etwas andere Zeichenfolge zurückContentDisposition DateTimes returns slightly different string

DetailsDetails

Zeichenfolgendarstellungen von System.Net.Mime.ContentDisposition wurden ab Version 4.6 aktualisiert, um die Stundenkomponente von System.DateTime immer durch zwei Ziffern darzustellen.String representations of System.Net.Mime.ContentDisposition's have been updated, beginning in 4.6, to always represent the hour component of a System.DateTime with two digits. Dies dient zur Einhaltung von RFC822 und RFC2822.This is to comply with RFC822 and RFC2822. Dies bewirkt, dass ToString() in Version 4.6 eine etwas andere Zeichenfolge in Szenarien zurückgibt, bei denen eines der Zeitelemente der Anordnung vor 10:00 Uhr liegt.This causes ToString() to return a slightly different string in 4.6 in scenarios where one of the disposition's time elements was before 10:00 AM. Beachten Sie, dass ContentDisposition-Klassen manchmal durch Konvertierung in Zeichenfolgen serialisiert werden, daher sollten alle ToString()-Vorgänge, Serialisierungen oder GetHashCode-Aufrufe überprüft werden.Note that ContentDispositions are sometimes serialized via converting them to strings, so any ToString() operations, serialization, or GetHashCode calls should be reviewed.

VorschlagSuggestion

Erwarten Sie nicht, dass die Zeichenfolgendarstellungen von „ContentDispositions“ aus verschiedenen Versionen von .NET Framework ordnungsgemäß miteinander verglichen werden können.Do not expect that string representations of ContentDispositions from different .NET Framework versions will correctly compare to one another. Konvertieren Sie die Zeichenfolgen wieder in „ContentDispositions“, sofern möglich, bevor Sie einen Vergleich durchführen.Convert the strings back to ContentDispositions, if possible, before conducting a comparison.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

SerialisierungSerialization

Die Ausnahmemeldung für fehlgeschlagene DataContract-Serialisierungen im Fall eines unbekannten Typs hat sich geändertException message has changed for failed DataContract serialization in case of an unknown type

DetailsDetails

Ab .NET Framework 4.6 wurde die Fehlermeldung klarer formuliert, die ausgelöst wurde, wenn die Serialisierung oder Deserialisierung von System.Runtime.Serialization.DataContractSerializer oder System.Runtime.Serialization.Json.DataContractJsonSerializer wegen fehlender „bekannter Typen“ fehlschlägt.Beginning in the .NET Framework 4.6, the exception message given if a System.Runtime.Serialization.DataContractSerializer or System.Runtime.Serialization.Json.DataContractJsonSerializer fails to serialize or deserialize due to missing 'known types' has been clarified.

VorschlagSuggestion

Apps sollten nicht von bestimmten Ausnahmemeldungen abhängig sein.Apps should not depend on specific exception messages. Wenn eine App von dieser Meldung abhängt, aktualisieren Sie diese, damit die neue Meldung erwartet wird. Im besten Fall ändern Sie die App so, dass sie nur vom Ausnahmetyp abhängt.If an app depends on this message, either update it to expect the new message or (preferably) change it to depend only on the exception type.

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Setup und BereitstellungSetup and Deployment

Änderungen der Produktversionsverwaltung in .NET Framework 4.6 und höherProduct versioning changes in the .NET Framework 4.6 and later versions

DetailsDetails

Die Produktversionsverwaltung wurde gegenüber früheren Releases von .NET Framework geändert, insbesondere gegenüber .NET Framework 4, 4.5, 4.5.1 und 4.5.2.Product versioning has changed from the previous releases of the .NET Framework, and particularly from the .NET Framework 4, 4.5, 4.5.1, and 4.5.2. Im Folgenden finden Sie die detaillierten Änderungen:The following are the detailed changes:

  • Der Wert des Version-Eintrags im HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full-Schlüssel wurde für .NET Framework 4.6 und dessen Punktreleases in 4.6.xxxxx und für .NET Framework 4.7 in und 4.7.1 in 4.7.xxxxx geändert.The value of the Version entry in the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full key has changed to 4.6.xxxxx for the .NET Framework 4.6 and its point releases, and to 4.7.xxxxx for the .NET Framework 4.7 and 4.7.1. In .NET Framework 4.5, 4.5.1 und 4.5.2 lautete das Format 4.5.xxxxx.In the .NET Framework 4.5, 4.5.1, and 4.5.2, it had the format 4.5.xxxxx.
  • Die Datei- und Produktversionsverwaltung für .NET Framework-Dateien wurde vom früheren Schema der Versionsverwaltung von 4.0.30319.x in 4.6.X.0 (für .NET Framework 4.6 und dessen Punktreleases) sowie in 4.7.X.0 (für .NET Framework 4.7 und 4.7.1) geändert.The file and product versioning for .NET Framework files has changed from the earlier versioning scheme of 4.0.30319.x to 4.6.X.0 for the .NET Framework 4.6 and its point releases, and to 4.7.X.0 for the .NET Framework 4.7 and 4.7.1. Sie können diese neuen Werte anzeigen, wenn Sie die Eigenschaften der Datei anzeigen, indem Sie mit der rechten Maustaste auf eine Datei klicken.You can see these new values when you view the file's Properties after right-clicking on a file.
  • Die Attribute AssemblyFileVersionAttribute und AssemblyInformationalVersionAttribute für verwaltete Assemblys verfügen über Versionswerte im Format 4.6.X.0 für .NET Framework 4.6 und die zugehörigen Punktreleases sowie 4.7.X.0 für .NET Framework 4.7 und 4.7.1.The AssemblyFileVersionAttribute and AssemblyInformationalVersionAttribute attributes for managed assemblies have Version values in the form 4.6.X.0 for the .NET Framework 4.6 and its point releases, and 4.7.X.0 for the .NET Framework 4.7 and 4.7.1.
  • In .NET Framework 4.6, 4.6.1, 4.6.2, 4.7 und 4.7.1, gibt die Environment.Version-Eigenschaft die korrigierte Versionszeichenfolge 4.0.30319.42000 zurück.In the .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, and 4.7.1, the Environment.Version property returns the fixed version string 4.0.30319.42000. In .NET Framework 4, 4.5, 4.5.1 und 4.5.2 gibt die Eigenschaft Versionszeichenfolgen im Format 4.0.30319.xxxxx zurück (z.B. "4.0.30319.18010").In the .NET Framework 4, 4.5, 4.5.1, and 4.5.2, it returns version strings in the format 4.0.30319.xxxxx (for example, "4.0.30319.18010"). Es wird nicht empfohlen, eine neue Abhängigkeit von der Eigenschaft „Environment.Version“ im Anwendungscode zu verwenden.Note that we do not recommend application code taking any new dependency on the Environment.Version property.
Weitere Informationen finden Sie unter Vorgehensweise: Bestimmen der installierten .NET Framework-Versionen.For more information, see How to: Determine which .NET Framework Versions Are Installed.

VorschlagSuggestion

Im Allgemeinen sollten Anwendungen von den empfohlenen Verfahren zum Erkennen solcher Faktoren, wie beispielsweise die Laufzeitversion von .NET Framework und das Installationsverzeichnis, abhängen:In general, applications should depend on the recommended techniques for detecting such things as the runtime version of the .NET Framework and the installation directory:

  • Wie Sie die Laufzeitversion von .NET Framework ermitteln, erfahren Sie unter Gewusst wie: Determine Which .NET Framework Versions Are Installed (Bestimmen der installierten .NET Framework-Versionen).To detect the runtime version of the .NET Framework, see How to: Determine Which .NET Framework Versions Are Installed.
  • Um den Installationspfad für .NET Framework zu ermitteln, verwenden Sie den Wert des InstallPath-Eintrags im HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full Schlüssel.To determine the installation path for the .NET Framework, use the value of the InstallPath entry in the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full key.
[!IMPORTANT] Der Name des Unterschlüssels ist NET Framework Setup und nicht .NET Framework Setup.The subkey name is NET Framework Setup, not .NET Framework Setup.
  • Um den Verzeichnispfad für die .NET Framework Common Language Runtime zu bestimmen, rufen Sie die RuntimeEnvironment.GetRuntimeDirectory()-Methode auf.To determine the directory path to the .NET Framework common language runtime, call the RuntimeEnvironment.GetRuntimeDirectory() method.
  • Um die CLR-Version zu erhalten, rufen Sie die RuntimeEnvironment.GetSystemVersion()-Methode auf.To get the CLR version, call the RuntimeEnvironment.GetSystemVersion() method. Für .NET Framework 4 und die dazugehörigen Punktreleases (.NET Framework 4.5, 4.5.1, 4.5.2 sowie .NET Framework 4.6, 4.6.1, 4.6.2, 4.7 und 4.7.1) wird die Zeichenfolge „v4.0.30319“ zurückgegeben.For the .NET Framework 4 and its point releases (the .NET Framework 4.5, 4.5.1, 4.5.2, and .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, and 4.7.1), it returns the string v4.0.30319.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

.NET Framework 4.6 verwendet keine 4.5.x.x-Version bei der RegistrierungThe .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry

DetailsDetails

Der Versionsschlüssel in der Registrierung (unter HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full) für .NET Framework 4.6 beginnt also mit „4.6“.As one might expect, the version key set in the registry (at HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full) for the .NET Framework 4.6 begins with '4.6', not '4.5'. Apps, die von diesen Registrierungsschlüsseln abhängig sind, damit sie wissen, welche .NET Framework-Versionen auf dem Computer installiert sind, sollten aktualisiert werden, sodass sie Version 4.6 als mögliche Version anerkennen, die mit den 4.5.x-Vorgängerversionen kompatibel ist.Apps that depend on these registry keys to know which .NET Framework versions are installed on a machine should be updated to understand that 4.6 is a new possible version, and one that is compatible with previous 4.5.x releases.

VorschlagSuggestion

Aktualisieren Sie Apps, die über 4.5-Registrierungsschlüssel nach einer .NET Framework 4.5-Installation suchen, sodass diese auch Version 4.6 akzeptieren.Update apps probing for a .NET Framework 4.5 install by looking for 4.5 registry keys to also accept 4.6.

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

ToolsTools

Contract.Invariant oder Contract.Requires<TException> erkennen String.IsNullOrEmpty nicht als reinen Wert anContract.Invariant or Contract.Requires<TException> do not consider String.IsNullOrEmpty to be pure

DetailsDetails

Für Apps, die auf .NET Framework 4.6.1 ausgerichtet sind, gibt der Rewriter die Compilerwarnung CC1036 aus, wenn der Invariantvertrag für Contract.Invariant oder der Vorbedingungsvertrag für Requires die Methode String.IsNullOrEmpty aufruft: "Erkannter Aufruf von Methode 'System.String.IsNullOrWhiteSpace(System.String)' ohne [Pure] in der Methode." Dies ist eher eine Compilerwarnung als ein Compilerfehler.For apps that target the .NET Framework 4.6.1, if the invariant contract for Contract.Invariant or the precondition contract for Requires calls the String.IsNullOrEmpty method, the rewriter emits compiler warning CC1036: "Detected call to method 'System.String.IsNullOrWhiteSpace(System.String)' without [Pure] in method." This is a compiler warning rather than a compiler error.

VorschlagSuggestion

Dieses Verhalten wurde in GitHub-Problem Nr. 339 behandelt.This behavior was addressed in GitHub Issue #339. Um diese Warnung zu vermeiden, können Sie eine aktualisierte Version des Quellcodes für das Codevertragstool auf GitHub herunterladen und kompilieren.To eliminate this warning, you can download and compile an updated version of the source code for the Code Contracts tool from GitHub. Informationen zum Herunterladen befinden sich am unteren Rand der Seite.Download information is found at the bottom of the page.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.6.14.6.1
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)

WCF-Dienste, die NETTCP mit SSL-Sicherheit und MD5-Zertifikatauthentifizierung verwendenWCF services that use NETTCP with SSL security and MD5 certificate authentication

DetailsDetails

.NET Framework 4.6 fügt TLS 1.1 und TLS 1.2 zur WCF-SSL-Standardprotokolliste hinzu.The .NET Framework 4.6 adds TLS 1.1 and TLS 1.2 to the WCF SSL default protocol list. Wenn sowohl auf dem Client- als auch auf dem Servercomputer .NET Framework 4.6 oder höher installiert ist, wird TLS 1.2 für die Aushandlung verwendet. TLS 1.2 unterstützt die MD5-Zertifikatauthentifizierung nicht.When both client and server machines have the .NET Framework 4.6 or later installed, TLS 1.2 is used for negotiation.TLS 1.2 does not support MD5 certificate authentication. Wenn ein Kunde daher ein MD5-Zertifikat verwendet, kann der WCF-Client keine Verbindung mit dem WCF-Dienst herstellen.As a result, if a customer uses an MD5 certificate, the WCF client will fail to connect to the WCF service.

VorschlagSuggestion

Sie können dieses Problem umgehen, sodass ein WCF-Client eine Verbindung mit einem WCF-Server herstellen kann, indem Sie eine der folgenden Aktionen ausführen:You can work around this issue so that a WCF client can connect to a WCF server by doing any of the following:

  • Aktualisieren Sie das Zertifikat so, dass der MD5-Algorithmus nicht verwendet wird.Update the certificate to not use the MD5 algorithm. Dies ist die empfohlene Lösung.This is the recommended solution.
  • Wenn die Bindung im Quellcode nicht dynamisch konfiguriert ist, aktualisieren Sie die Konfigurationsdatei der Anwendung für die Verwendung von TLS 1.1 oder einer früheren Version des Protokolls.If the binding is not dynamically configured in source code, update the application's configuration file to use TLS 1.1 or an earlier version of the protocol. Dadurch können Sie weiterhin ein Zertifikat mit MD5-Hashalgorithmus verwenden.This allows you to continue to use a certificate with the MD5 hash algorithm.

Warnung

Diese Problemumgehung wird nicht empfohlen, da ein Zertifikat mit MD5-Hashalgorithmus als unsicher angesehen wird.This workaround is not recommended, since a certificate with the MD5 hash algorithm is considered insecure.

In der folgenden Konfigurationsdatei wird so vorgegangen:The following configuration file does this:

<configuration>
  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding>
          <security mode= "None/Transport/Message/TransportWithMessageCredential" >
            <transport clientCredentialType="None/Windows/Certificate"
                       protectionLevel="None/Sign/EncryptAndSign"
                       sslProtocols="Ssl3/Tls1/Tls11">
            </transport>
          </security>
        </binding>
      </netTcpBinding>
    </bindings>
  </system.ServiceModel>
</configuration>

Warnung

Diese Problemumgehung wird nicht empfohlen, da ein Zertifikat mit MD5-Hashalgorithmus als unsicher angesehen wird.This workaround is not recommended, since a certificate with the MD5 hash algorithm is considered insecure.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)

Der Zugriff auf die ausgewählten Elemente eines WPF-DataGrid-Steuerelements über einen Handler des UnloadingRow-Ereignisses kann eine NullReferenceException auslösenAccessing a WPF DataGrid's selected items from a handler of the DataGrid's UnloadingRow event can cause a NullReferenceException

DetailsDetails

Aufgrund eines Fehlers in .NET Framework 4.5 können Ereignishandler für DataGrid-Ereignisse, die das Entfernen einer Zeile umfassen, eine System.NullReferenceException auslösen, die ausgelöst werden soll, wenn auf die System.Windows.Controls.Primitives.Selector.SelectedItem- oder System.Windows.Controls.Primitives.MultiSelector.SelectedItems-Eigenschaft von DataGrid zugegriffen wird.Due to a bug in the .NET Framework 4.5, event handlers for DataGrid events involving the removal of a row can cause a System.NullReferenceException to be thrown if they access the DataGrid's System.Windows.Controls.Primitives.Selector.SelectedItem or System.Windows.Controls.Primitives.MultiSelector.SelectedItems properties.

VorschlagSuggestion

Dieses Problem wurde in .NET Framework 4.6 behoben und kann durch ein Upgrade auf diese Version von .NET Framework vermieden werden.This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.54.5
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Der Aufruf von DataGrid.CommitEdit über einen CellEditEnding-Handler verliert den FokusCalling DataGrid.CommitEdit from a CellEditEnding handler drops focus

DetailsDetails

Wenn das CommitEdit()-Element von einem der System.Windows.Controls.DataGrid.CellEditEnding-Ereignishandler von System.Windows.Controls.DataGrid aufgerufen, verliert System.Windows.Controls.DataGrid den Fokus.Calling CommitEdit() from one of the System.Windows.Controls.DataGrid's System.Windows.Controls.DataGrid.CellEditEnding event handlers causes the System.Windows.Controls.DataGrid to lose focus.

VorschlagSuggestion

Dieses Problem wurde in .NET Framework 4.5.2 behoben, daher kann es durch ein Upgrade von .NET Framework vermieden werden.This bug has been fixed in the .NET Framework 4.5.2, so it can be avoided by upgrading the .NET Framework. Alternativ kann dies vermieden werden, indem das System.Windows.Controls.DataGrid-Element nach dem Aufruf von System.Windows.Controls.DataGrid.CommitEdit() explizit neu ausgewählt wird.Alternatively, it can be avoided by explicitly re-selecting the System.Windows.Controls.DataGrid after calling System.Windows.Controls.DataGrid.CommitEdit().

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.54.5
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Das Aufrufen von Items.Refresh für die WPF-Steuerelemente ListBox, ListView oder DataGrid mit ausgewählten Einträgen kann dazu führen, dass im Element doppelte Einträge angezeigt werden.Calling Items.Refresh on a WPF ListBox, ListView, or DataGrid with items selected can cause duplicate items to appear in the element

DetailsDetails

In .NET Framework 4.5 kann der Aufruf von „ListBox.Items.Refresh“ mit ausgewählten Einträgen über Code dazu führen, dass die in System.Windows.Controls.ListBox ausgewählten Einträge in der Liste doppelt vorkommen.In the .NET Framework 4.5, calling ListBox.Items.Refresh from code while items are selected in a System.Windows.Controls.ListBox can cause the selected items to be duplicated in the list. Bei System.Windows.Controls.ListView und System.Windows.Controls.DataGrid tritt ein ähnliches Problem auf.A similar issue occurs with System.Windows.Controls.ListView and System.Windows.Controls.DataGrid. Dieses Problem wurde in .NET Framework 4.6 behoben.This is fixed in the .NET Framework 4.6.

VorschlagSuggestion

Dieses Problem kann dadurch umgangen werden, dass die Auswahl der Einträge programmgesteuert aufgehoben wird, bevor System.Windows.Data.CollectionView.Refresh() aufgerufen wird. Nachdem der Aufruf abgeschlossen ist, werden die Einträge erneut ausgewählt.This issue may be worked around by programmatically unselecting items before System.Windows.Data.CollectionView.Refresh() is called and then re-selecting them after the call is completed. Dieses Problem wurde alternativ in .NET Framework 4.6 behoben und kann durch ein Upgrade auf diese Version von .NET Framework vermieden werden.Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.54.5
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

CoerceIsSelectionBoxHighlightedCoerceIsSelectionBoxHighlighted

DetailsDetails

Einige Sequenzen von Aktionen, die ein System.Windows.Controls.ComboBox-Element und dessen Datenquelle umfassen, können eine System.NullReferenceException auslösen.Certain sequences of actions involving a System.Windows.Controls.ComboBox and its data source can result in a System.NullReferenceException.

VorschlagSuggestion

Führen Sie nach Möglichkeit ein Upgrade auf .NET Framework 4.6.2 durch.If possible, upgrade to .NET Framework 4.6.2.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Das Scrollen zum untersten Eintrag in ItemsControl-Steuerelementen (z.B. ListBox und DataGrid) war bei Verwendung von benutzerdefinierten DataTemplates zeitweilig nicht möglich.Intermittently unable to scroll to bottom item in ItemsControls (like ListBox and DataGrid) when using custom DataTemplates

DetailsDetails

In einigen Fällen verursacht ein Fehler in .NET Framework 4.5, dass ItemsControl-Steuerelemente (z.B. System.Windows.Controls.ListBox, System.Windows.Controls.ComboBox und System.Windows.Controls.DataGrid) nicht zum untersten Eintrag scrollen, wenn benutzerdefinierte DataTemplates verwendet werden.In some instances, a bug in the .NET Framework 4.5 is causing ItemsControls (like System.Windows.Controls.ListBox, System.Windows.Controls.ComboBox, System.Windows.Controls.DataGrid, etc.) to not scroll to their bottom item when using custom DataTemplates. Wenn der Vorgang ein zweites Mal versucht wird (nachdem wieder nach oben gescrollt wurde), funktioniert es entsprechend.If the scrolling is attempted a second time (after scrolling back up), it will work then.

VorschlagSuggestion

Dieses Problem wurde in .NET Framework 4.5.2 behoben und kann durch ein Upgrade auf diese (oder eine höhere) Version von .NET Framework vermieden werden.This issue has been fixed in the .NET Framework 4.5.2 and may be addressed by upgrading to that version (or a later version) of the .NET Framework. Alternativ können Benutzer weiterhin Scrolleisten in diesen Auflistungen ziehen, wobei sie es möglicherweise zweimal versuchen müssen, bis der Vorgang erfolgreich ausgeführt wird.Alternatively, users can still drag scroll bars to the final items in these collections, but may need to try twice to do so successfully.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.54.5
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

Elementscrolling durch eine flache Liste mit Elementen mit unterschiedlicher PixelhöheItem-scrolling a flat list with items of different pixel-height

DetailsDetails

Wenn ein System.Windows.Controls.ItemsControl-Element eine Sammlung mithilfe von Virtualisierung (IsVirtualizing=true) und Elementscrolling (ScrollUnit=Item) anzeigt, und wenn das Steuerelement gescrollt wird, um ein Element anzuzeigen, dessen Größe in Pixeln sich von dessen Nachbarn unterscheidet, durchläuft System.Windows.Controls.VirtualizingStackPanel alle Elemente in der Sammlung.When an System.Windows.Controls.ItemsControl displays a collection using virtualization (IsVirtualizing=true) and item- scrolling (ScrollUnit=Item), and when the control scrolls to display an item whose height in pixels differs from its neighbors, the System.Windows.Controls.VirtualizingStackPanel iterates over all items in the collection. Die Benutzeroberfläche reagiert während dieser Iteration nicht. Wenn die Sammlung groß ist, kann dies als Absturz wahrgenommen werden.The UI is unresponsive during this iteration; if the collection is large, this can be perceived as a hang. Die Iteration tritt auch in anderen Fällen und selbst in früheren .NET Framework-Releases auf.The iteration occurs in other circumstances, even in previous .NET Framework releases. Sie tritt z.B. beim Scrollen von Pixeln (ScrollUnit=Pixel) auf, nachdem ein Element mit einer anderen Pixelhöhe erkannt wurde sowie beim Elementscrolling für hierarchische Daten (wie beim System.Windows.Controls.TreeView-Steuerelement oder einem System.Windows.Controls.ItemsControl-Element mit aktivierter Gruppierung), nachdem bei einem Element eine andere Anzahl von Nachfolgerelementen als bei seinen Nachbarn erkannt wurde. Im Fall des Elementscrollings bei unterschiedlicher Pixelhöhe wurde die Iteration in .NET Framework 4.6.1 eingeführt, um Fehler im Layout der hierarchischen Daten zu beheben.For example, it occurs when pixel-scrolling (ScrollUnit=Pixel) upon encountering an item with different pixel height, and when item-scrolling hierarchical data (such as a System.Windows.Controls.TreeView or an System.Windows.Controls.ItemsControl with grouping enabled) upon encountering an item with a different number of descendant items than its neighbors.For the case of item-scrolling and different pixel height, the iteration was introduced in .NET Framework 4.6.1 to fix bugs in the layout of hierarchical data. Dies ist für flache Datenstrukturen (ohne Hierarchie) nicht erforderlich, und .NET Framework 4.6.2 führt die Iteration in diesem Fall nicht aus.It is not needed if the data is flat (no hierarchy), and .NET Framework 4.6.2 does not do it in that case.

VorschlagSuggestion

Wenn die Iteration in .NET Framework 4.6.1, aber nicht in früheren Releases auftritt, also wenn System.Windows.Controls.ItemsControl das Elementscrolling in einer flachen Liste von Elementen mit unterschiedlicher Pixelhöhe durchführt, gibt es zwei Lösungen:If the iteration occurs in .NET Framework 4.6.1 but not in earlier releases - that is, if the System.Windows.Controls.ItemsControl is item- scrolling a flat list with items of different pixel height - there are two remedies:

  1. .NET Framework 4.6.2 installierenInstall .NET Framework 4.6.2.
  2. Hotfix HR 1605 für .NET Framework 4.6.1 installierenInstall hotfix HR 1605 for .NET Framework 4.6.1.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.6.14.6.1
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

IsSelected-Bindungsfehler für ListBoxItem mit ObservableCollection<T>.MoveListBoxItem IsSelected binding issue with ObservableCollection<T>.Move

DetailsDetails

Wenn Move(Int32, Int32) oder MoveItem(Int32, Int32) für eine Auflistung aufgerufen werden, die über aktivierte Elemente an ein System.Windows.Controls.ListBox-Element gebunden ist, können bei der (De-)Aktivierung von System.Windows.Controls.ListBox-Elementen Fehler auftreten.Calling Move(Int32, Int32) or MoveItem(Int32, Int32) on a collection bound to a System.Windows.Controls.ListBox with items selected can lead to erratic behavior with future selection or unselection of System.Windows.Controls.ListBox items.

VorschlagSuggestion

Wenn Sie anstelle von Move(Int32, Int32)System.Collections.ObjectModel.Collection<T>.Remove(T) und System.Collections.ObjectModel.Collection<T>.Insert(Int32, T) aufrufen, kann dieser Fehler umgangen werden.Calling System.Collections.ObjectModel.Collection<T>.Remove(T) and System.Collections.ObjectModel.Collection<T>.Insert(Int32, T) instead of Move(Int32, Int32) will work around this issue. Dieses Problem wurde alternativ in .NET Framework 4.6 behoben und kann durch ein Upgrade auf diese Version von .NET Framework vermieden werden.Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.54.5
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Von der WPF-Rechtschreibprüfung ausgelöste ObjectDisposedException-AusnahmeObjectDisposedException thrown by WPF spellchecker

DetailsDetails

WPF-Anwendungen stürzen beim Beenden der Anwendung gelegentlich ab. Dabei löst die Rechtschreibprüfung die Ausnahme System.ObjectDisposedException aus.WPF applications occasionally crash during application shutdown with an System.ObjectDisposedException thrown by the spellchecker. Dies wurde in WPF für .NET Framework 4.7 behoben, indem die Ausnahme ordnungsgemäß verarbeitet wird. Dadurch wird sichergestellt, dass die Anwendungen nicht mehr beeinträchtigt werden.This is fixed in .NET Framework 4.7 WPF by handling the exception gracefully, and thus ensuring that applications are no longer adversely affected. Es ist zu beachten, dass auch weiterhin gelegentlich nicht abgefangene Ausnahmen bei Anwendungen auftreten, die unter einem Debugger ausgeführt werden.It should be noted that occasional first-chance exceptions would continue to be observed in applications running under a debugger.

VorschlagSuggestion

Upgrade auf .NET Framework 4.7Upgrade to .NET Framework 4.7

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.6.14.6.1
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

Bei einem Rechtsklick auf einen Zeilenheader des WPF-DataGrid-Steuerelements wird die DataGrid-Auswahl geändertRight clicking on a WPF DataGrid row header changes the DataGrid selection

DetailsDetails

Bei einem Rechtsklick auf einen ausgewählten System.Windows.Controls.DataGrid-Zeilenheader, wird nur diese ausgewählte Zeile geändert, wenn in System.Windows.Controls.DataGrid mehrere Zeilen ausgewählt sind.Right-clicking a selected System.Windows.Controls.DataGrid row header while multiple rows are selected results in the System.Windows.Controls.DataGrid's selection changing to only that row.

VorschlagSuggestion

Dieses Problem wurde in .NET Framework 4.6 behoben und kann durch ein Upgrade auf diese Version von .NET Framework vermieden werden.This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework.

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.54.5
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Die WPF-Rechtschreibprüfungs-API schlägt auf unerwartete Weise fehlWPF Spell Checking fails in unexpected ways

DetailsDetails

Dies umfasst eine Reihe von Problemen mit der WPF-Rechtschreibprüfungs-API:This includes a number of WPF Spell Checker issues:

  • Die WPF-Rechtschreibprüfungs-API löst manchmal System.Runtime.InteropServices.COMException ausWPF Spell Checker sometimes throws System.Runtime.InteropServices.COMException
  • Die WPF-Rechtschreibprüfungs-API schlägt mit der Ausnahme UnauthorizedAccessException fehl, wenn Anwendungen mit der Einstellung „Als anderer Benutzer ausführen“ gestartet werden.WPF Spell Checker fails with UnauthorizedAccessException when applications are launched using 'run as different user'
  • Die WPF-Rechtschreibprüfungs-API erkennt fälschlicherweise Rechtschreibfehler in zusammengesetzten deutschen Wörtern wie „Hausnummer“.WPF Spell Checker incorrectly identifies spelling errors in compound words like 'Hausnummer' in German.

VorschlagSuggestion

Problem 1: wurde in .NET Framework 4.6.2 behoben. Problem 2: Die WPF-Rechtschreibprüfungs-API wird nicht mehr unterstützt, wenn Anwendungen mit der Einstellung „Als anderer Benutzer ausführen“ gestartet werden.Issue #1 - This has been fixed in .NET Framework 4.6.2 Issue #2 - WPF Spell Checker is no longer supported when applications are launched using 'run as different user'. Ab .NET Framework 4.6.2 stürzen Anwendungen, die auf diese Weise gestartet werden, nicht mehr unerwartet ab. Stattdessen wird nur die Rechtschreibprüfungs-API im Hintergrund deaktiviert.Starting .NET Framework 4.6.2, applications launched in this manner will no longer crash unexpectedly - instead the Spell Checker will be silently disabled. Problem 3: wurde in .NET Framework 4.6.2 behoben.Issue #3 - This has been fixed in .NET Framework 4.6.2.

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.6.14.6.1
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

Die Rechtschreibüberprüfung in textfähigen WPF-Steuerelementen funktioniert unter Windows 10 nicht für die Sprachen, die nicht in der Liste der Eingabesprachen in dem Betriebssystem aufgeführt sindWPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list

DetailsDetails

Bei einem Windows 10-Betriebssystem kann es sein, dass die Rechtschreibüberprüfung für textfähige WPF-Steuerelemente nicht funktioniert, da die plattformspezifischen Funktionen zur Rechtsschreibüberprüfung nur für die Sprachen verfügbar sind, die in der Liste mit den Eingabesprachen aufgeführt sind. Wenn in Windows 10 eine Sprache zu der Liste mit verfügbaren Tastaturen hinzugefügt wird, lädt Windows automatisch ein passendes Feature-On-Demand-Paket herunter, das Funktion zur Rechtschreibüberprüfung enthält, und installiert dieses.When running on Windows 10, the spell checker may not work for WPF text-enabled controls because platform spell-checking capabilities are available only for languages present in the input languages list.In Windows 10, when a language is added to the list of available keyboards, Windows automatically downloads and installs a corresponding Feature on Demand (FOD) package that provides spell-checking capabilities. Durch das Hinzufügen der Sprache zur Eingabesprachenliste wird die Rechtschreibprüfung unterstützt.By adding the language to the input languages list, the spell checker will be supported.

VorschlagSuggestion

Beachten Sie, das die Sprache oder der Text, deren bzw. dessen Rechtschreibung überprüft werden muss, als Eingabesprache hinzugefügt werden muss, damit die Rechtschreibüberprüfung in Windows 10 funktioniert.Be aware that the language or text to be spell-checked must be added as an input language for spell-checking to work in Windows 10.

nameName WertValue
BereichScope Microsoft EdgeEdge
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

WPF-Fenster werden ohne Clipping gerendert, wenn diese die Größe eines einzelnen Monitors überschreitenWPF windows are rendered without clipping when extending outside a single monitor

DetailsDetails

In .NET Framework 4.6, das auf Windows 8 und höher ausgeführt wird, wird das gesamte Fenster ohne Clipping gerendert, wenn es in einem Szenario mit mehreren Monitoren außerhalb einer einzelnen Anzeige liegt.In the .NET Framework 4.6 running on Windows 8 and above, the entire window is rendered without clipping when it extends outside of single display in a multi-monitor scenario. Dies unterscheidet sich von früheren Versionen von .NET Framework, bei denen WPF-Fenster beschnitten werden, die eine einzelne Anzeige überschreiten.This is different from previous versions of the .NET Framework which would clip WPF windows that extended beyond a single display.

VorschlagSuggestion

Dieses Verhalten (ob ein Clipping angewendet wird oder nicht) kann explizit festgelegt werden, indem Sie das <EnableMultiMonitorDisplayClipping>-Element von <appSettings> in der Konfigurationsdatei einer Anwendung verwenden oder indem Sie die EnableMultiMonitorDisplayClipping-Eigenschaft beim Starten der App festlegen.This behavior (whether to clip or not) can be explicitly set using the <EnableMultiMonitorDisplayClipping> element in <appSettings> in an application's configuration file, or by setting the EnableMultiMonitorDisplayClipping property at app startup.

nameName WertValue
BereichScope GeringMinor
VersionVersion 4.64.6
TypType LaufzeitRuntime

Betroffene APIsAffected APIs

Nicht über API-Analyse erkennbar.Not detectable via API analysis.

XMLXML

Änderungen an der XML-AnalyseXML parsing changes

NameName WertValue
BereichScope GeringMinor
VersionVersion 4.5.24.5.2
TypType LaufzeitRuntime

DetailsDetails

Aus Sicherheitsgründen wurden die folgenden Änderungen in den XML-Analyse-APIs eingeführt:For security reasons, the following changes were introduced into XML parsing APIS:

Hinweis

XmlReaderSettings wird von allen XML-Analysen verwendet. Diese Änderung unterstützt den XmlReader-Fall, wirkt sich aber auch auf andere Szenarios aus.XmlReaderSettings is used by all XML parsers, so while this change helps the XmlReader case, it also affects other scenarios.

VorschlagSuggestion

Sie können einen Wert in der Registrierung festlegen, um das vorherige Verhalten wiederherzustellen.To revert to the previous behavior, you can set a value in the registry. Fügen Sie einen DWORD-Wert namens EnableLegacyXmlSettings zum Registrierungsschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\XML hinzu, und legen Sie den Wert auf 1 fest.Add a DWORD value named EnableLegacyXmlSettings to the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\XML registry key, and set its value to 1. Sie können den Registrierungswert stattdessen auch im HKEY_CURRENT_USER-Hive hinzufügen.You can also add the registry value in the HKEY_CURRENT_USER hive instead.

Betroffene APIsAffected APIs

Darüber hinaus ist jede direkt oder indirekt von XmlResolver abhängige XML-API betroffen.In addition, any XML API that depends on XmlResolver, either directly or indirectly, is affected.