Migrationsprobleme in .NET Framework 4.NET Framework 4 migration issues

In diesem Thema werden Migrationsprobleme zwischen .NET Framework Version 3.5 Servicepack 1 und .NET Framework 4 beschrieben. Dabei werden auch Probleme aufgrund von Programmfehlerbehebungen, Änderungen für die Einhaltung von Standards und Sicherheit sowie Änderungen auf Grundlage von Kundenfeedback besprochen.This topic describes migration issues between the .NET Framework version 3.5 Service Pack 1 and the .NET Framework version 4, including fixes, changes for standards compliance and security, and changes based on customer feedback. Für die meisten dieser Änderungen sind keine Programmieränderungen in den Anwendungen erforderlich.Most of these changes do not require any programming modifications in your applications. In den Fällen, in denen Änderungen erforderlich sind, finden Sie Informationen in der Spalte „Empfohlene Änderungen“ in der Tabelle.For those that may involve modifications, see the Recommended changes column of the table.

In diesem Thema werden wichtige Änderungen in den folgenden Bereichen beschrieben:This topic describes notable changes in the following areas:

Einen allgemeineren Überblick über die Probleme in diesem Thema finden Sie im Migrationshandbuch zu .NET Framework 4.7, 4.6 und 4.5.For an higher-level overview of the issues in this topic, see the Migration Guide to the .NET Framework 4.

Informationen zu Migrationsproblemen nach Beta 2 finden Sie unter Migration Issues for .NET Framework 4 Applications: Beta 2 to RTM (Migrationsprobleme in .NET Framework 4-Anwendungen: Beta 2 zu RTM).For migration issues after Beta 2, see Migration Issues for .NET Framework 4 Applications: Beta 2 to RTM.

Informationen zu neuen Funktionen finden Sie unter Neuigkeiten in .NET Framework.For information about new features, see What's New in the .NET Framework 4.

ASP.NET und WebASP.NET and Web

Namespaces: System.Web, System.Web.Mobile, System.Web.Security, System.Web.UI.WebControls; Assembly: System.Web (in „System.Web.dll“)Namespaces: System.Web, System.Web.Mobile, System.Web.Security, System.Web.UI.WebControls; assembly: System.Web (in System.Web.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
BrowserdefinitionsdateienBrowser definition files Die Browserdefinitionsdateien wurden aktualisiert und enthalten jetzt Informationen zu neuen und aktualisierten Browsern und Geräten.The browser definition files have been updated to include information about new and updated browsers and devices. Ältere Browser und Geräte wie Netscape Navigator wurden entfernt und neuere Browser und Geräte wie Google Chrome und Apple iPhone hinzugefügt.Older browsers and devices such as Netscape Navigator have been removed, and newer browsers and devices such as Google Chrome and Apple iPhone have been added.

Wenn Ihre Anwendung benutzerdefinierte Browserdefinitionen enthält, die von einer der entfernten Browserdefinitionen erben, wird ein Fehler angezeigt.If your application contains custom browser definitions that inherit from one of the browser definitions that have been removed, you will see an error.

Das HttpBrowserCapabilities-Objekt (von der Request.Browse-Eigenschaft der Seite verfügbar gemacht) wird durch die Browserdefinitionsdateien gesteuert.The HttpBrowserCapabilities object (which is exposed by the page's Request.Browse property) is driven by the browser definition files. Aus diesem Grund können die Informationen, die durch den Zugriff auf eine Eigenschaft dieses Objekts in ASP.NET 4 zurückgegeben werden, von den Informationen abweichen, die in einer früheren Version von ASP.NET zurückgegeben wurden.Therefore, the information that is returned by accessing a property of this object in ASP.NET 4 might be different than the information that was returned in an earlier version of ASP.NET.
Wenn Ihre Anwendung auf den alten Browserdefinitionsdateien basiert, können Sie diese aus dem folgenden Ordner kopieren:If your application relies on the old browser definition files, you can copy them from the following folder:

Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\BrowserWindows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers

Kopieren Sie die Dateien in den entsprechenden Ordner \CONFIG\Browser für ASP.NET 4.Copy the files into the corresponding \CONFIG\Browsers folder for ASP.NET 4. Führen Sie nach dem Kopieren der Dateien das Befehlszeilentool Aspnet_regbrowsers.exe aus.After you copy the files, run the Aspnet_regbrowsers.exe command-line tool. Weitere Informationen finden Sie auf der Website http://www.asp.net/mobile.For more information, see the http://www.asp.net/mobile Web site.
Untergeordnete Anwendungen werden unter Mischversionen von ASP.NET ausgeführtChild applications running under mixed versions of ASP.NET ASP.NET 4-Anwendungen, die als untergeordnete Anwendungen konfiguriert wurden, die frühere Versionen von ASP.NET ausführen, können möglicherweise aufgrund von Konfigurations- oder Kompilierungsfehlern nicht starten.ASP.NET 4 applications that are configured as children of applications that run earlier versions of ASP.NET might fail to start because of configuration or compilation errors. Der genauen Fehler, der auftritt, hängt davon ab, ob die Anwendung unter IIS 6.0 oder unter IIS 7 oder IIS 7.5 ausgeführt wird.The specific error that occurs depends on whether the application runs under IIS 6.0, or under IIS 7 or IIS 7.5. An den Konfigurationsdateien der betroffenen Anwendungen lassen sich Änderungen vornehmen, damit das Konfigurationssystem die ASP.NET 4-Anwendung ordnungsgemäß erkennt.You can make changes to the configuration files of the affected applications so that the configuration system correctly recognizes the ASP.NET 4 application. Informationen zu den Änderungen, die Sie vornehmen müssen, finden Sie auf der ASP.NET-Website im Dokument ASP.NET 4 Breaking Changes (Grundlegende Änderungen in ASP.NET 4 ) im Abschnitt „ASP.NET 4 Child Applications Fail to Start When Under ASP.NET 2.0 or ASP.NET 3.5 Applications“ (Untergeordnete ASP.NET 4-Anwendungen können unter ASP.NET 2.0 oder ASP.NET 3.5-Anwendungen nicht gestartet werden).For information about the changes you must make, see the section "ASP.NET 4 Child Applications Fail to Start When Under ASP.NET 2.0 or ASP.NET 3.5 Applications" in the document ASP.NET 4 Breaking Changes on the ASP.NET Web site.
Änderungen an der ClientIDClientID changes Mit der neuen clientIDMode-Einstellung in ASP.NET 4 haben Sie die Möglichkeit anzugeben, wie ASP.NET das id-Attribut für HTML-Elemente generiert.The new clientIDMode setting in ASP.NET 4 lets you specify how ASP.NET generates the id attribute for HTML elements. In früheren Versionen von ASP.NET entsprach das Standardverhalten der AutoID-Einstellung von clientIDMode.In previous versions of ASP.NET, the default behavior was equivalent to the AutoID setting of clientIDMode. Die Standardeinstellung ist jetzt Predictable.The default setting is now Predictable. Weitere Informationen finden Sie unter Steuerelementidentifikation in Web Forms.For more information, see ASP.NET Web Server Control Identification. Wenn Sie Ihre Anwendung mit Visual Studio 2010 von ASP.NET 2.0 oder ASP.NET 3.5 upgraden, fügt das Tool der Datei „Web.config“ automatisch eine Einstellung hinzu, die das Verhalten früherer Versionen von .NET Framework beibehält.If you use Visual Studio 2010 to upgrade your application from ASP.NET 2.0 or ASP.NET 3.5, the tool automatically adds a setting to the Web.config file that preserves the behavior of earlier versions of the .NET Framework. Wenn Sie eine Anwendung jedoch upgraden, indem Sie den Anwendungspool in IIS so ändern, dass er sich an .NET Framework 4 richtet, verwendet ASP.NET standardmäßig den neuen Modus.However, if you upgrade an application by changing the application pool in IIS to target the .NET Framework 4, ASP.NET uses the new mode by default. Um den neuen Client-ID-Modus zu deaktivieren, fügen Sie die folgende Einstellung in der Datei „Web.config“ hinzu:To disable the new client ID mode, add the following setting to the Web.config file:

<pages clientIDMode="AutoID" />
Codezugriffssicherheit (Code Access Security, CAS)Code access security (CAS) ASP.NET 2.0-Funktionen, die in ASP.NET 3.5 hinzugefügt wurden, verwenden das Codezugriffssicherheitsmodell (CAS) von .NET Framework 1.1 und .NET Framework 2.0.ASP.NET 2.0 NET features that were added in ASP.NET 3.5 use the .NET Framework 1.1 and .NET Framework 2.0 code access security (CAS) model. Die Implementierung von CAS wurde in ASP.NET 4 aber erheblich überholt.However, the implementation of CAS in ASP.NET 4 has been substantially overhauled. Daher können teilweise vertrauenswürdige ASP.NET-Anwendungen, die vertrauenswürdigen Code verwenden, der im globalen Assemblycache ausgeführt wird, mit verschiedenen Sicherheitsausnahmen Fehler auslösen.As a result, partial-trust ASP.NET applications that rely on trusted code running in the global assembly cache might fail with various security exceptions. Teilweise vertrauenswürdige Anwendungen, die umfangreiche Änderungen an den CAS-Richtlinien des Computers verwenden, lösen möglicherweise auch Fehler und Sicherheitsausnahmen aus.Partial-trust applications that rely on extensive modifications to machine CAS policy might also fail and throw security exceptions. Sie können das Verhalten von teilweise vertrauenswürdigen ASP.NET 4-Anwendungen auf das von ASP.NET 1.1 und 2.0 zurücksetzen. Nutzen Sie dazu das neue legacyCasModel-Attribut im trust-Konfigurationselement, wie im folgenden Beispiel gezeigt:You can revert partial-trust ASP.NET 4 applications to the behavior of ASP.NET 1.1 and 2.0 by using the new legacyCasModel attribute in the trust configuration element, as shown in the following example:

<trust level= "Medium" legacyCasModel="true" />

Wichtig: Eine Zurücksetzung auf ein älteres CAS-Modell bringt möglicherweise Sicherheitseinschränkungen mit sich.Important: Reverting to the older CAS model might represent reduced security.

Weitere Informationen zu dem neuen ASP.NET 4-Modell für Codezugriffssicherheit finden Sie unter Codezugriffssicherheit für ASP.NET 4-Anwendungen.For more information about the new ASP.NET 4 code access security model, see Code Access Security in ASP.NET 4 Applications.
KonfigurationsdateienConfiguration files Die Stammkonfigurationsdateien für .NET Framework und ASP.NET 4 (die Datei „machine.config“ und die Stammdatei „Web.config“) wurden aktualisiert und enthalten jetzt die meisten Standardkonfigurationsinformationen aus den „Web.config“-Dateien in ASP.NET 3.5.The root configuration files (the machine.config file and the root Web.config file) for the .NET Framework and ASP.NET 4 have been updated to include most of the boilerplate configuration information that was found in the application Web.config files in ASP.NET 3.5. Wegen der Komplexität von verwalteten IIS 7 und IIS 7.5-Konfigurationssystemen kann die Ausführung von ASP.NET 3.5-Anwendungen unter ASP.NET 4 sowie unter IIS 7 und IIS 7.5 entweder ASP.NET-Fehler oder IIS-Fehler hervorrufen.Because of the complexity of the managed IIS 7 and IIS 7.5 configuration systems, running ASP.NET 3.5 applications under ASP.NET 4 and under IIS 7 and IIS 7.5 can result in either ASP.NET errors or IIS errors. Aktualisieren Sie ASP.NET 3.5-Anwendungen mithilfe der Upgrade-Tools für Projekte in Visual Studio 2010 auf ASP.NET 4.Upgrade ASP.NET 3.5 applications to ASP.NET 4 by using the project upgrade tools in Visual Studio 2010. Visual Studio 2010 ändert die „Web.config“-Datei der ASP.NET 3.5-Anwendung automatisch, sodass sie die entsprechenden Einstellungen für ASP.NET 4 enthält.Visual Studio 2010 automatically modifies the ASP.NET 3.5 application's Web.config file to contain the appropriate settings for ASP.NET 4.

ASP.NET 3.5-Anwendungen lassen sich aber auch ohne Neukompilierung mit .NET Framework 4 ausführen.However, you can run ASP.NET 3.5 applications using the .NET Framework 4 without recompilation. Dazu müssen Sie die „Web.config“-Datei der Anwendung möglicherweise manuell ändern, bevor die Anwendung unter .NET Framework 4 und IIS 7 oder IIS 7.5 ausgeführt wird.In that case, you might have to manually modify the application's Web.config file before you run the application under the .NET Framework 4 and under IIS 7 or IIS 7.5. Die Änderung, die Sie vornehmen müssen, hängt von der Softwarekombination (einschließlich der Service Pack-Versionen (SP)) ab, mit der Sie arbeiten.The specific change you must make depends on the combination of software you are working with, including Service Pack (SP) releases. Informationen zu den möglichen Softwarekombinationen, die dieser Änderung betroffen sind, finden Sie auf der ASP.NET-Website im Dokument ASP.NET 4 Breaking Changes im Abschnitt „Configuration Errors Related to New ASP.NET 4 Root Configuration“ (Konfigurationsfehler im Zusammenhang mit der neuen ASP.NET 4-Stammkonfiguration).For information about the possible software combinations that are affected by this change and how to resolve problems with specific combinations, see the section "Configuration Errors Related to New ASP.NET 4 Root Configuration" in the document ASP.NET 4 Breaking Changes on the ASP.NET Web site.
Rendern von SteuerelementenControl rendering In früheren Versionen von ASP.NET haben einige Steuerelemente Markup ausgegeben, das nicht deaktiviert werden konnte.In previous versions of ASP.NET, some controls emitted markup that you could not disable. Diese Art von Markup wird in ASP.NET 4 standardmäßig nicht mehr generiert.By default, this type of markup is no longer generated in ASP.NET 4. Die Renderingänderungen wirken sich auf die folgenden Steuerelemente aus:The rendering changes affect the following controls:

* Die Steuerelemente Image und ImageButton rendern das Attribut border="0" nicht mehr.* The Image and ImageButton controls no longer render a border="0" attribute.
* Die BaseValidator-Klasse und die Validierungssteuerelemente, die sich davon ableiten, rendern standardmäßig keinen rot formatierten Text mehr.* The BaseValidator class and validation controls that derive from it no longer render red text by default.
* Das Steuerelement HtmlForm rendert kein name-Attribut.* The HtmlForm control does not render a name attribute.
* Das Steuerelement Table rendert nicht mehr das Attribut border="0".* The Table control no longer renders a border="0" attribute.

Steuerelemente, die nicht für Benutzereingaben entworfen wurden (z.B. das Steuerelement Label), rendern nicht mehr das Attribut disabled="disabled", wenn ihre Enabled-Eigenschaftensatz auf false festgelegt ist (oder wenn sie diese Einstellung von einem Containersteuerelement erben).Controls that are not designed for user input (for example, the Label control) no longer render the disabled="disabled" attribute if their Enabled property is set to false (or if they inherit this setting from a container control).
Wenn Sie Ihre Anwendung mit Visual Studio 2010 von ASP.NET 2.0 oder ASP.NET 3.5 upgraden, fügt das Tool der Datei „Web.config“ automatisch eine Einstellung hinzu, die das Legacyrendering beibehält.If you use Visual Studio 2010 to upgrade your application from ASP.NET 2.0 or ASP.NET 3.5, the tool automatically adds a setting to the Web.config file that preserves legacy rendering. Wenn Sie eine Anwendung jedoch upgraden, indem Sie den Anwendungspool in IIS so ändern, dass er sich an .NET Framework 4 richtet, verwendet ASP.NET standardmäßig den neuen Renderingmodus.However, if you upgrade an application by changing the application pool in IIS to target the .NET Framework 4, ASP.NET uses the new rendering mode by default. Um den neuen Renderingmodus zu deaktivieren, fügen Sie die folgende Einstellung in der Datei „Web.config“ hinzu:To disable the new rendering mode, add the following setting to the Web.config file:

<pages controlRenderingCompatibilityVersion="3.5" />
Ereignishandler in StandarddokumentenEvent handlers in default documents ASP.NET 4 rendert den action-Attributwert des HTML-Formularelements (form-Element) als eine leere Zeichenfolge, wenn eine Anforderung an eine URL ohne Erweiterung erfolgt, der ein Standarddokument zugeordnet wurde.ASP.NET 4 renders the HTML form element's action attribute value as an empty string when a request is made to an extensionless URL that has a default document mapped to it. In früheren Versionen von ASP.NET folgte aus einer Anforderung an http://contoso.com eine Anforderung an „Default.aspx“.In earlier releases of ASP.NET, a request to http://contoso.com would result in a request to Default.aspx. In diesem Dokument wurde das öffnende form-Tag wie im folgenden Beispiel gerendert:In that document, the opening form tag would be rendered as in the following example:

<form action="Default.aspx" />

In ASP.NET 4 folgt aus einer Anforderung an http://contoso.com auch eine Anforderung an „Default.aspx“, allerdings rendert ASP.NET jetzt auch das öffnende HTML-form-Tag, wie im folgenden Beispiel gezeigt:In ASP.NET 4, a request to http://contoso.com also results in a request to Default.aspx, but ASP.NET now renders the HTML opening form tag as in the following example:

<form action="" />

Wenn das action-Attribut eine leere Zeichenfolge ist, erstellt das IIS-DefaultDocumentModule-Objekt eine untergeordnete Anforderung an „Default.aspx“.When the action attribute is an empty string, the IIS DefaultDocumentModule object creates a child request to Default.aspx. In den meisten Situationen ist diese untergeordnete Anforderung für Anwendungscode transparent, und die Seite „Default.aspx“ wird normal ausgeführt.Under most conditions, this child request is transparent to application code, and the Default.aspx page runs normally. Allerdings kann eine mögliche Interaktion zwischen verwaltetem Code und IIS 7 oder IIS 7.5 im integrierten Modus dazu führen, dass verwaltete ASPX-Seiten während der untergeordnete Anforderung nicht mehr ordnungsgemäß ausgeführt werden.However, a potential interaction between managed code and IIS 7 or IIS 7.5 Integrated mode can cause managed .aspx pages to stop working properly during the child request. Unter den folgenden Umständen ruft die untergeordnete Anforderung an ein standardmäßiges ASPX-Dokument einen Fehler oder unerwartetes Verhalten hervor:If the following conditions occur, the child request to a default .aspx document will result in an error or in unexpected behavior:

* Eine ASPX-Seite wird an den Browser gesendet, wobei der action-Attributsatz des form-Elements auf "" festgelegt ist.* An .aspx page is sent to the browser with the form element's action attribute set to "".
* Das Formular wird an ASP.NET zurückgesendet.* The form is posted back to ASP.NET.
* Ein verwaltetes HTTP-Modul liest einen Teil des Einheitstextkörpers, z.B. Request.Form oder Request.Params.* A managed HTTP module reads some part of the entity body, such as Request.Form or Request.Params. Aus diesem Grund wird der Einheitstextkörper der POST-Anforderung im verwalteten Arbeitsspeicher gelesen.This causes the entity body of the POST request to be read into managed memory. Der Einheitstextkörper ist daher nicht mehr für native Codemodule verfügbar, die in IIS 7 oder IIS 7.5 im integrierten Modus ausgeführt werden.As a result, the entity body is no longer available to any native code modules that are running in IIS 7 or IIS 7.5 Integrated mode.
* Das IIS-DefaultDocumentModule-Objekt wird schließlich ausgeführt und erstellt eine untergeordnete Anforderung an das Dokument „Default.aspx“.* The IIS DefaultDocumentModule object eventually runs and creates a child request to the Default.aspx document. Da der Einheitstextkörper bereits von verwaltetem Code gelesen wurde, kann kein Einheitstextkörper an die untergeordnete Anforderung gesendet werden.However, because the entity body has already been read by a piece of managed code, there is no entity body available to send to the child request.
* Wenn die HTTP-Pipeline für die untergeordnete Anforderung ausgeführt wird, wird der Handler für ASPX-Dateien während der Handlerausführungsphase ausgeführt.* When the HTTP pipeline runs for the child request, the handler for .aspx files runs during the handler-execute phase.

Da kein Einheitstextkörper verfügbar ist, gibt es auch keine Formularvariablen und keinen Ansichtszustand.Because there is no entity body, there are no form variables and no view state. Aus diesem Grund hat der ASPX-Seitenhandler keine Informationen dazu, welches Ereignis (sofern vorhanden) ausgelöst werden soll.Therefore there is no information available for the .aspx page handler to determine what event (if any) should be raised. Daher werden keine Postback-Ereignishandler für die betroffene ASPX-Seite ausgeführt.As a result, none of the postback event handlers for the affected .aspx page run.
Informationen zur Umgehung von Problemen, die aufgrund der Änderung auftreten können, finden Sie auf der ASP.NET-Website im Dokument ASP.NET 4 Breaking Changes unter „Event Handlers Might Not Be Not Raised in a Default Document in IIS 7 or IIS 7.5 Integrated Mode“ (Ereignishandler wird in einem Standarddokument im integrierten Modus in IIS 7 oder IIS 7.5 möglicherweise nicht ausgelöst).For information about ways to work around problems that might arise as a result of this change, see "Event Handlers Might Not Be Not Raised in a Default Document in IIS 7 or IIS 7.5 Integrated Mode" in the document ASP.NET 4 Breaking Changes on the ASP.NET Web site.
HashalgorithmusHashing algorithm ASP.NET verwendet sowohl Verschlüsselung als auch Hashalgorithmen, um Daten wie Formularauthentifizierungscookies und den Ansichtsstatus zu sichern.ASP.NET uses both encryption and hashing algorithms to help secure data such as forms authentication cookies and view state. Bei Hashvorgängen für Cookies und den Ansichtszustand verwendet ASP.NET 4 standardmäßig den Algorithmus HMACSHA256.By default, ASP.NET 4 uses the HMACSHA256 algorithm for hash operations on cookies and view state. Frühere Versionen von ASP.NET haben die älteren Algorithmus HMACSHA1 verwendet.Earlier versions of ASP.NET used the older HMACSHA1 algorithm. Für Anwendungen, die ASP.NET 2.0 und ASP.NET 4 kombinieren und in denen Daten wie Formularauthentifizierungscookies in verschiedenen .NET Framework-Versionen unterstützt werden müssen, können Sie eine ASP.NET 4 Web-Anwendung mit dem älteren HMACSHA1-Algorithmus konfigurieren, indem Sie die folgende Einstellung in der Datei „Web.config“ hinzufügen:If you run applications that mix ASP.NET 2.0 and ASP.NET 4, where data such as forms authentication cookies must work across .NET Framework versions, configure an ASP.NET 4 Web application to use the older HMACSHA1 algorithm by adding the following setting in the Web.config file:

<machineKey validation="SHA1" />
Hosten von Steuerelementen in Internet ExplorerHosting controls in Internet Explorer Windows Forms-Steuerelemente können nicht mehr in Internet Explorer gehostet werden, weil es bessere Lösungen für das Hosten von Steuerelementen im Web gibt.You can no longer host Windows Forms controls in the Internet Explorer, because there are better solutions for hosting controls on the Web. Daher wurden die Assemblys „IEHost.dll“ und „IEExec.exe“ aus .NET Framework entfernt.Therefore, the IEHost.dll and IEExec.exe assemblies have been removed from the .NET Framework. Mithilfe der folgenden Technologien lassen sich Steuerelement in Webanwendungen benutzerdefiniert entwickeln:You can use the following technologies for custom control development in Web applications:

* Sie können eine Silverlight-Anwendung erstellen und sie so konfigurieren, dass sie außerhalb des Browsers ausgeführt wird.* You can create a Silverlight application and configure it to run outside the browser. Weitere Informationen finden Sie unter Out-of-Browser Support (Out-of-Browser-Unterstützung).For more information, see Out-of-Browser Support.
* Sie haben die Möglichkeit, eine XAML-Browseranwendung (XBAP) zu erstellen, um WPF-Funktionen zu nutzen (erfordert .NET Framework auf Clientcomputern).* You can build a XAML browser application (XBAP) to take advantage of WPF capabilities (requires the .NET Framework on client machines). Weitere Informationen finden Sie unter Übersicht über WPF-XAML-Browseranwendungen.For more information, see WPF XAML Browser Applications Overview.
Die Methoden „HtmlEncode“ und „UrlEncode“HtmlEncode and UrlEncode methods Die Methoden HtmlEncode und UrlEncode der Klassen HttpUtility und HttpServerUtility wurden aktualisiert und codieren das einfache Anführungszeichen (') jetzt wie folgt:The HtmlEncode and UrlEncode methods of the HttpUtility and HttpServerUtility classes have been updated to encode the single quotation mark character (') as follows:

* Die Methode HtmlEncode codiert Instanzen von einfachen Anführungszeichen mit &#39;.* The HtmlEncode method encodes instances of the single quotation mark as &#39;
* Die Methode UrlEncode codiert Instanzen von einfachen Anführungszeichen mit %27.* The UrlEncode method encodes instances of the single quotation mark as %27
Überprüfen Sie Ihren Code auf die Methoden HtmlEncode und UrlEncode, und achten Sie darauf, dass die Änderung der Codierung keine Auswirkungen auf Ihre Anwendung hat.Examine your code for places where you use the HtmlEncode and UrlEncode methods, and make sure that the change in encoding does not result in a change that would affect your application.
HttpException-Fehler in ASP.NET 2.0-AnwendungenHttpException errors in ASP.NET 2.0 applications Nachdem ASP.NET 4 für IIS 6 aktiviert wurde, generieren ASP.NET 2.0-Anwendungen, die auf IIS 6 (entweder unter Windows Server 2003 oder Windows Server 2003 R2) ausgeführt werden, möglicherweise Fehler wie den folgenden: System.Web.HttpException: Path '/[yourApplicationRoot]/eurl.axd/[Value]' was not found.After ASP.NET 4 has been enabled on IIS 6, ASP.NET 2.0 applications that run on IIS 6 (in either Windows Server 2003 or Windows Server 2003 R2) might generate errors such as the following: System.Web.HttpException: Path '/[yourApplicationRoot]/eurl.axd/[Value]' was not found. * Wenn ASP.NET 4 nicht erforderlich ist, um die Website auszuführen, ordnen Sie die Website ASP.NET 2.0 neu zu.* If ASP.NET 4 is not required in order to run the Web site, remap the site to use ASP.NET 2.0 instead.

- oder - -or-

* Wenn ASP.NET 4 für die Ausführung der Website erforderlich ist, verschieben Sie alle untergeordneten virtuellen ASP.NET 2.0-Verzeichnisse auf eine andere Website, die ASP.NET 2.0 zugeordnet ist.* If ASP.NET 4 is required in order to run the Web site, move any child ASP.NET 2.0 virtual directories to a different Web site that is mapped to ASP.NET 2.0.

- oder - -or-

* Deaktivieren Sie URLs ohne Erweiterung.* Disable extensionless URLs. Weitere Informationen finden Sie auf der ASP.NET-Website im Dokument ASP.NET 4 Breaking Changes unter „ASP.NET 2.0 Applications Might Generate HttpException Errors That Reference eurl.axd“ (ASP.NET 2.0-Anwendungen generieren möglicherweise HttpException-Fehler, die auf eurl.axd verweisen).For more information, see "ASP.NET 2.0 Applications Might Generate HttpException Errors That Reference eurl.axd" in the document ASP.NET 4 Breaking Changes on the ASP.NET Web site.
MitgliedschaftstypenMembership types Einige Typen (z.B. MembershipProvider) der ASP.NET-Mitgliedschaft wurden aus der Assembly „System.Web.dll“ in „System.Web.ApplicationServices.dll“ verschoben.Some types (for example, MembershipProvider) that are used in ASP.NET membership have been moved from System.Web.dll to the System.Web.ApplicationServices.dll assembly. So sollten architektonische Schichtabhängigkeiten zwischen Typen im Client und erweiterten .NET Framework-SKUs gelöst werden.The types were moved in order to resolve architectural layering dependencies between types in the client and in extended .NET Framework SKUs. Klassenbibliotheken, die von früheren Versionen von ASP.NET upgegradet wurden und Mitgliedschaftstypen verwenden, die verschoben wurden, können in einem ASP.NET 4-Projekt möglicherweise nicht kompiliert werden.Class libraries that have been upgraded from earlier versions of ASP.NET and that use membership types that have been moved might fail to compile when used in an ASP.NET 4 project. Wenn dies der Fall ist, fügen Sie im Klassenbibliotheksprojekt „System.Web.ApplicationServices.dll“ einen Verweis hinzu.If so, add a reference in the class library project to System.Web.ApplicationServices.dll.
Änderungen an MenüsteuerelementenMenu control changes Änderungen am Steuerelement Menu rufen das folgende Verhalten hervor:Changes to the Menu control result in the following behavior:

* Wenn MenuRenderingMode auf List festgelegt ist, oder wenn MenuRenderingMode auf Default und ControlRenderingCompatibilityVersion auf 4.0 oder höher festgelegt ist, hat die Eigenschaft PopOutImageUrl keine Auswirkungen.* If MenuRenderingMode is set to List, or if MenuRenderingMode is set to Default and ControlRenderingCompatibilityVersion is set to 4.0 or later, the PopOutImageUrl property has no effect.
* Wenn der Pfad, der in den Eigenschaften StaticPopOutImageUrl und DynamicPopOutImageUrl festgelegt wird, einen umgekehrten Schrägstrich (\) enthält, werden die Bilder nicht gerendert.* If the path that is set in the StaticPopOutImageUrl and DynamicPopOutImageUrl properties contains a backslash (\), the images do not render. (In früheren Versionen von ASP.NET durfte der Pfad einen umgekehrten Schrägstrich enthalten.)(In earlier versions of ASP.NET, the path could include a backslash.)
* Anstatt die Eigenschaft PopOutImageUrl für einzelne Menüelemente festzulegen, sollten Sie StaticPopOutImageUrl oder DynamicPopOutImageUrl des übergeordneten Menu-Steuerelements festlegen.* Instead of setting the PopOutImageUrl property for individual menu items, set the StaticPopOutImageUrl or DynamicPopOutImageUrl of the parent Menu control.

- oder - -or-

Legen Sie MenuRenderingMode auf Table fest, oder legen Sie MenuRenderingMode auf Default und ControlRenderingCompatibilityVersion auf 3.5 fest.Set MenuRenderingMode to Table, or set MenuRenderingMode to Default and set ControlRenderingCompatibilityVersion to 3.5. Aufgrund dieser Einstellungen verwendet das Menu-Steuerelement das tabellenbasierte HTML-Layout, das in früheren Versionen von ASP.NET verwendet wurde.These settings cause the Menu control to use the HTML table-based layout that it used in earlier versions of ASP.NET.
* Wenn der Pfad in den Eigenschaften StaticPopOutImageUrl oder DynamicPopOutImageUrl einen umgekehrten Schrägstrich (\) enthält, ersetzen Sie ihn durch einen Schrägstrich (/).* If the path in the StaticPopOutImageUrl or DynamicPopOutImageUrl property contains a backslash (\), substitute a slash character (/).
Mobile Assembly in der Datei „Web.config“Mobile assembly in Web.config file In früheren Versionen von ASP.NET war unter system.web/compilation im Abschnitt assemblies in der Stammdatei „Web.config“ ein Verweis auf die Assembly „System.Web.Mobile.dll“ enthalten.In previous versions of ASP.NET, a reference to the System.Web.Mobile.dll assembly was included in the root Web.config file in the assemblies section under system.web/compilation. Um die Leistung zu verbessern, wurde der Verweis auf diese Assembly entfernt.To improve performance, the reference to this assembly has been removed.

Hinweis: Die Assembly „System.Web.Mobile.dll“ und mobile ASP.NET-Steuerelemente sind in ASP.NET 4 enthalten, aber veraltet.Note: The System.Web.Mobile.dll assembly and the ASP.NET mobile controls are included in ASP.NET 4, but they are deprecated.
Wenn Sie die Typen aus dieser Assembly verwenden möchten, fügen Sie in der „Web.config“-Stammdatei oder in einer „Web.config“-Anwendungsdatei einen Verweis auf die Assembly hinzu.If you want to use types from this assembly, add a reference to the assembly in either the root Web.config file or in an application Web.config file.
AusgabezwischenspeicherungOutput caching In ASP.NET 1.0 haben zwischengespeicherte Seiten, die Location="ServerAndClient" als Einstellung für die Ausgabezwischenspeicherung angegeben haben, aufgrund eines Fehlers einen Vary:*-HTTP-Header in der Antwort ausgegeben.In ASP.NET 1.0, a bug caused cached pages that specified Location="ServerAndClient" as an output€“cache setting to emit a Vary:* HTTP header in the response. So wurde Clientbrowsern mitgeteilt, dass Seiten nie lokal zwischengespeichert werden sollen.This had the effect of telling client browsers to never cache the page locally. In ASP.NET Version 1.1 wurde die Methode SetOmitVaryStar hinzugefügt, um aufgerufen werden kann, um den Vary:*-Header zu unterdrücken.In ASP.NET 1.1, the SetOmitVaryStar method was added, which could be called in order to suppress the Vary:* header. Allerdings legen Problemberichte nahe, dass Entwickler keine Kenntnis von dem SetOmitVaryStar-Verhalten haben.However, bug reports suggest that developers are unaware of the existing SetOmitVaryStar behavior.

In ASP.NET 4 wird der Vary:*-HTTP-Header nicht mehr in Antworten ausgegeben, die folgende Anweisung angeben:In ASP.NET 4, the Vary:* HTTP header is no longer emitted from responses that specify the following directive:

<%@ OutputCache Location="ServerAndClient" %>

Daher wird die Methode SetOmitVaryStar nicht mehr benötigt, um den Vary:*-Header zu unterdrücken.As a result, the SetOmitVaryStar method is no longer needed in order to suppress the Vary:* header. In Anwendungen, die für das Location-Attribut „ServerAndClient“ angeben, können Seiten im Browser zwischengespeichert werden, ohne dass SetOmitVaryStar aufgerufen werden muss.In applications that specify "ServerAndClient" for the Location attribute, pages will be cacheable in the browser without requiring that you call SetOmitVaryStar.
Wenn Seiten in der Anwendung Vary:* ausgeben müssen, rufen Sie die Methode AppendHeader wie im folgenden Beispiel dargestellt auf:If pages in the application must emit Vary:*, call the AppendHeader method as shown in the following example:

System.Web.HttpResponse.AppendHeader("Vary","*");

Alternativ können Sie den Wert des Location-Attribut der Ausgabezwischenspeicherung in „Server“ ändern.Alternatively, you can change the value of the output caching Location attribute to "Server".
SeitenanalysePage parsing Der Seitenparser für ASP.NET-Webseiten (ASPX-Dateien) und -Benutzersteuerelemente (ASCX-Dateien) ist in ASP.NET 4 strenger und kennzeichnet mehr Markup als in früheren Versionen als ungültig als in früheren Versionen.The page parser for ASP.NET Web pages (.aspx files) and user controls (.ascx files) is stricter in ASP.NET 4 than in earlier versions of ASP.NET, and it flags more markup as invalid than in earlier versions. Nehmen wir z.B. die Fehlermeldungen, die bei der Ausführung einer Seite erstellt werden, und Fehler, die von ungültigem Markup hervorgerufen werden.Examine error messages that are produced when a page runs and fix errors that result from invalid markup.
Passport-TypenPassport types Die in ASP.NET 2.0 integrierte Unterstützung für Passport ist veraltet und aufgrund von Änderungen in Passport (jetzt Live ID SDK) wird die Unterstützung nicht weitergeführt.The Passport support built into ASP.NET 2.0 is obsolete and is unsupported due to changes in Passport (now Live ID SDK). Daher werden die Typen im Zusammenhang mit Passport in System.Web.Security jetzt mit dem ObsoleteAttribute-Attribut markiert.As a result, the types related to Passport in System.Web.Security are now marked with the ObsoleteAttribute attribute. Ändern Sie den Code, der Passport-Typen im System.Web.Security-Namespace verwendet (z.B. PassportIdentity), um das SDK zu nutzen.Change any code you have that uses Passport types in the System.Web.Security namespace (for example, PassportIdentity) to use the SDK.
PathInfo-Informationen in der FilePath-EigenschaftPathInfo information in the FilePath property In ASP.NET 4 ist der PathInfo-Wert nicht mehr in den Rückgabewerten von Eigenschaften wie FilePath, AppRelativeCurrentExecutionFilePath und CurrentExecutionFilePath enthalten.ASP.NET 4 no longer includes the PathInfo value in the return values from properties such as FilePath, AppRelativeCurrentExecutionFilePath, and CurrentExecutionFilePath. Die PathInfo-Informationen sind stattdessen in PathInfo verfügbar.Instead, the PathInfo information is available in PathInfo. Nehmen wir z.B. das folgenden URL-Fragment:For example, imagine the following URL fragment:

/testapp/Action.mvc/SomeAction

In früheren Versionen von ASP.NET hatten HttpRequest-Eigenschaften die folgenden Werte:In earlier versions of ASP.NET, HttpRequest properties have the following values:

* FilePath: /testapp/Action.mvc/SomeAction* FilePath: /testapp/Action.mvc/SomeAction
* PathInfo: (leer)* PathInfo: (empty)

In ASP.NET 4 haben HttpRequest-Eigenschaften stattdessen die folgenden Werte:In ASP.NET 4, HttpRequest properties instead have the following values:

* FilePath: /testapp/Action.mvc* FilePath: /testapp/Action.mvc
* PathInfo: SomeAction* PathInfo: SomeAction
Prüfen Sie den Code darauf, ob Eigenschaften der HttpRequest-Klasse verwendet werden, um Pfadinformationen zurückgeben. Ändern Sie ggf. im Code die Art und Weise, wie Pfadinformationen zurückgegeben werden.Examine your code for places where you rely on properties of the HttpRequest class to return path information; change the code to reflect the changes in how path information is returned.
AnforderungsvalidierungRequest validation Um die Anforderungsvalidierung zu verbessern, wird die ASP.NET-Anforderungsvalidierung früher im Lebenszyklus aufgerufen.To improve request validation, the ASP.NET request validation is invoked earlier in the request life cycle. Daher wird die Anforderungsvalidierung für Anforderungen ausgeführt, die nicht an ASPX-Dateien gerichtet sind, z.B. für Aufrufe des Webdiensts und benutzerdefinierte Handler.As a result, request validation runs for requests that are not for .aspx files, such as for Web service calls and for custom handlers. Die Anforderungsvalidierung wird auch aktiv, wenn benutzerdefinierte HTTP-Module in der Pipeline zur Anforderungsverarbeitung ausgeführt werden.Request validation will also be active when custom HTTP modules are running in the request processing pipeline.

Aufgrund der Änderung lösen Anforderungen von anderen Ressourcen als ASPX-Dateien unter Umständen Anforderungsvalidierungsfehler aus.As a result of this change, requests for resources other than .aspx files might throw request validation errors. Benutzerdefinierter Code, der in der Anforderungspipeline ausgeführt wird (z.B. benutzerdefinierte HTTP-Module), kann auch Anforderungsvalidierungsfehler auslösen.Custom code that runs in the request pipeline (for example, custom HTTP modules) might also throw request validation errors.
Bei Bedarf können Sie das alte Verhalten wiederherstellen, bei dem nur ASPX-Seiten die Anforderungsvalidierung mithilfe der folgenden Einstellung in der Webkonfigurationsdatei auslösen:If necessary, you can revert to the old behavior of having only .aspx pages triggering request validation by using the following setting in the Web configuration file:

<httpRuntime requestValidationMode="2.0" />

Warnung: Wenn Sie das alte Verhalten wiederherstellen, vergewissern Sie sich, dass der gesamte Code im vorhandenen Handler, in Modulen und in anderem benutzerdefinierten Code auf potenziell unsichere HTTP-Eingaben prüft, die XSS-Angriffsvektor sein können.Warning: If you revert to the old behavior, make sure that all code in existing handlers, modules, and other custom code performs checks for potentially unsafe HTTP inputs that could be XSS attack vectors.`
RoutingRouting Wenn Sie eine Dateisystemwebsite in Visual Studio 2010 erstellen und die Website sich in einen Ordner mit einem Punkt (.) im Ordnernamen befindet, funktioniert das URL-Routing nicht zuverlässig.If you create a file system Web site in Visual Studio 2010 and the Web site is in a folder that contains a dot (.) in the folder name, URL routing will not work reliably. Einige virtuelle Pfade geben einen HTTP 404-Fehler zurück.An HTTP 404 error is returned from some virtual paths. Dies tritt auf, weil Visual Studio 2010 den Visual Studio Development Server (Cassini) mit einem falschen Pfad für das virtuelle Stammverzeichnis startet.This occurs because Visual Studio 2010 launches the Visual Studio Development Server (Cassini) using an incorrect path for the root virtual directory. * Ändern Sie auf der Seite Eigenschaften für die dateibasierte Website das Attribut Virtueller Pfad auf „/“.* In the Properties page for the file-based Web site, change the Virtual Path attribute to "/".

- oder - -or-

* Erstellen Sie ein Webanwendungsprojekt statt eines Websiteprojekts.* Create a Web application project instead of a Web site project. In Webanwendungsprojekten tritt dieses Problem nicht auf, und das URL-Routing funktioniert, selbst wenn der Name des Projektordners einen Punkt enthält.Web application projects do not have this issue, and URL routing works even if the project folder has a dot in its name.

- oder - -or-

* Erstellen Sie eine in IIS gehostete, HTTP-basierte-Website.* Create an HTTP-based Web site that is hosted in IIS. Die virtuellen Pfade und Projektdateiordner können bei in IIS-gehosteten Websites auch Punkte enthalten.IIS-hosted Web sites can have dots in the virtual path as well as in the project file folder.
SharePoint-WebsitesSharePoint sites Wenn Sie versuchen, eine ASP.NET 4-Website auszuführen, die als untergeordnetes Element einer SharePoint-Website bereitgestellt wird, die eine benutzerdefinierte, partielle Vertrauensebene namens WSS_Minimal enthält, wird die folgende Fehlermeldung angezeigt:If you try to run an ASP.NET 4 Web site that is deployed as a child of a SharePoint Web site that contains a custom partial-trust level named WSS_Minimal, you will see the following error:

Could not find permission set named 'ASP.Net'.
Derzeit sind keine Versionen von SharePoint mit ASP.NET kompatibel.Currently, no versions of SharePoint are compatible with ASP.NET. Daher sollten Sie nicht versuchen, eine ASP.NET 4-Website als untergeordnetes Element einer SharePoint-Website auszuführen.As a result, you should not attempt to run an ASP.NET 4 Web site as a child of a SharePoint Web site.
XHTML 1.1-StandardsXHTML 1.1 standards Damit neue Websites mit XHTML 1.1 kompatibel sind, generieren die ASP.NET-Steuerelemente in .NET Framework 4 XHTML 1.1-kompatibles HTML.To enable XHTML 1.1 compliance for new Web sites, the ASP.NET controls in the .NET Framework 4 will generate XHTML 1.1 compliant HTML. Dieses Rendering wird mit der folgenden Option in der Datei „Web.config“ innerhalb der <system.Web>-Elements aktiviert:This rendering is enabled using the following option in the Web.config file inside the <system.Web> element:

<pages controlRenderingCompatibilityVersion="4.0"/>

Diese Option ist standardmäßig auf 4.0 festgelegt.This option is set by default to 4.0. In Webprojekten, die von Visual Studio auf Visual Studio 2008 upgegradet wurden, ist die 3.5-Einstellung aus Kompatibilitätsgründen aktiviert.Web projects that are upgraded to Visual Studio from Visual Studio 2008 will have the 3.5 setting enabled for compatibility.
KeineNone.

KernspeicherCore

Allgemeine FunktionenGeneral features

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
CardSpaceCardSpace Windows CardSpace steht nicht mehr in .NET Framework enthalten, sondern wird getrennt bereitgestellt.Windows CardSpace is no longer included in the .NET Framework; it is provided separately. Sie können CardSpace im Microsoft Download Center herunterladen.Download Windows CardSpace from the Microsoft Download Center.
KonfigurationsdateienConfiguration files An der Art und Weise, wie .NET Framework auf Anwendungskonfigurationsdateien zugreift, wurden ebenfalls Korrekturen vorgenommen.Corrections have been made in how the .NET Framework accesses application configuration files. Wenn Ihre Anwendungskonfigurationsdatei application-name.config heißt, benennen Sie sie in application-name.exe.config um. Benennen Sie MyApp.config z.B. in MyApp.exe.config um.If your application configuration file is named application-name.config, rename it to application-name.exe.config. For example, rename MyApp.config to MyApp.exe.config.
C#-CodecompilerC# code compiler Die Klassen Compiler, CompilerError und ErrorLevel aus dem Microsoft.CSharp-Namespace sind nicht mehr verfügbar, und ihre Assembly (cscompmgd.dll) ist nicht mehr in .NET Framework enthalten.The Compiler, CompilerError, and ErrorLevel classes that were in the Microsoft.CSharp namespace are no longer available, and their assembly (cscompmgd.dll) is no longer included in the .NET Framework. Verwenden Sie stattdessen die CodeDomProvider-Klasse und andere Klassen im System.CodeDom.Compiler-Namespace.Use the CodeDomProvider class and other classes in the System.CodeDom.Compiler namespace. Weitere Informationen finden Sie unter Verwenden von CodeDOM.For more information, see Using the CodeDOM.
Hosting (nicht verwaltete API)Hosting (unmanaged API) Um die Hostingfunktionen zu verbessern, wurden einige der Hosting-Aktivierungs-APIs als veraltet gekennzeichnet.To improve hosting capabilities, some of the hosting activation APIs have been deprecated. Funktionen zur parallelen in-Process-Ausführung ermöglichen es Anwendungen, mehrere Versionen von .NET Framework im gleichen Prozess zu laden und zu starten.In-process side-by-side execution features enable an application to load and start multiple versions of the .NET Framework in the same process. Sie haben z.B. die Möglichkeit, Anwendungen auszuführen, die auf .NET Framework 2.0 SP1 und auf .NET Framework 4 basierende Add-Ins (oder Komponenten) im selben Prozess laden.For example, you can run applications that load add-ins (or components) that are based on the .NET Framework 2.0 SP1 and add-ins that are based on the .NET Framework 4 in the same process. Ältere Komponenten verwenden weiterhin die ältere Version von .NET Framework, während neue Komponenten die neue Version verwenden.Older components continue to use the older .NET Framework version, and new components use the new .NET Framework version. Verwenden Sie die unter Parallele In-Process-Ausführung beschriebene Konfigurationen.Use the configurations described in In-Process Side-by-Side Execution.
Neues SicherheitsmodellNew security model Die Codezugriffssicherheitsrichtlinie wurde deaktiviert und durch ein vereinfachtes Modell ersetzt, wie in Änderungen der Sicherheit in .NET Framework 4 beschrieben.The code access security (CAS) policy has been turned off and replaced with a simplified model, as described in Security Changes in the .NET Framework 4. Wenn Sie in Ihren Anwendungen von CAS abhängen, sind Änderungen unter Umständen erforderlich.Modifications may be required if you depend on CAS in your applications. Weitere Informationen finden Sie unter Kompatibilität und Migration von Richtlinien für die Codezugriffssicherheit.For more information, see Code Access Security Policy Compatibility and Migration.

Datum und UhrzeitDate and time

Namespace: System; Assembly: mscorlib (in „mscorlib.dll“)Namespace: System; assembly: mscorlib (in mscorlib.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
SommerzeitDaylight savings Um Abweichungen von der Systemuhr zu vermeiden, verwenden Zeiteigenschaften (wie Local und Now) nun Betriebssystemregeln anstelle von anderen .NET Framework-Daten für Vorgänge hinsichtlich Sommerzeit.To be consistent with the system clock, time properties (such as Local and Now) now use operating system rules instead of other .NET Framework data for daylight saving time operations. KeineNone.
FormatierungszeichenfolgeFormatting strings Um die kulturabhängige Formatierung zu unterstützen, enthält die TimeSpan-Struktur neue Überladungen der Methoden ToString, Parse und TryParse sowie ParseExact und TryParseExact.To support culture-sensitive formatting, the TimeSpan structure includes new overloads of the ToString, Parse, and TryParse methods in addition to new ParseExact and TryParseExact methods. KeineNone.

GlobalisierungGlobalization

Eine Liste der neuen neutralen und spezifischen Kulturen finden Sie unter Neues bei der Globalisierung und Lokalisierung.For a list of new neutral and specific cultures, see What's New in Globalization and Localization.

Namespace: System.Globalization; Assembly: mscorlib (in „mscorlib.dll“)Namespace: System.Globalization; assembly: mscorlib (in mscorlib.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
Namen von KulturenCulture names Die folgenden Namensänderungen wirken sich auf die deutsch- und Divehi-sprachigen sowie auf die afrikanischen Kulturen aus:The following name changes affect the German, Divehi, and African cultures:

* CurrencyEnglishName: Der Name der Währung der Kultur „Deutsch (Schweiz)“ (de-CH) wurde von „sFr.“* CurrencyEnglishName: The currency name for the German (Switizerland) (de-CH) culture has changed from "sFr." in „Fr.“ geändert.to "Fr.".
* LongDatePattern: Das lange Datumsmuster für die Kultur „Divehi (Malediven)“ (dv-MV) wurde von „dd/MMMM/yyyy“ in „dd/MM/yyyy“ geändert.* LongDatePattern: The long date pattern for the Divehi (Maldives) (dv-MV) culture has changed from "dd/MMMM/yyyy" to "dd/MM/yyyy".
* PMDesignator: Der PM-* PMDesignator: The P.M. Kennzeichner der Kultur „Afrikaans (Südafrika)“ wurde von „nm“ in „PM“ geändert.designator of the Afrikaans (South Africa) (af-ZA) culture has changed from "nm" to "PM".
Beachten Sie die Namensänderungen für Kulturen.Note culture name changes.
LICD-ParameterLCID parameter Damit das erwartete Verhalten in den Einstellungen des Automatisierungsserver auftritt, übergibt die CLR die aktuelle Kultur für den LCID-Parameter nicht mehr an nicht verwaltete COM-basierte Anwendungen.To be consistent with expected behavior in automation server settings, the CLR no longer passes the current culture for the LCID parameter to unmanaged COM-based applications. Stattdessen wird 1033 (en-US) für die Kultur übergeben.Instead, it passes 1033 (en-us) for the culture. Mit Ausnahme der nativen Anwendungen, die eine angegebene Kultur erfordern,sind keine Änderungen erforderlich.No modifications necessary except for native applications that require a specified culture.
Veraltete KulturtypenObsolete culture types Die Kulturtypen CultureTypes und CultureTypes sind jetzt veraltet.The CultureTypes and CultureTypes culture types are now obsolete.

Aus Gründen der Abwärtskompatibilität gibt CultureTypes jetzt neutrale und spezifische Kulturen zurück, die in früheren .NET Framework-Versionen enthalten waren, und CultureTypes gibt jetzt eine leere Liste zurück.For backward compatibility, CultureTypes now returns neutral and specific cultures that were included with the previous .NET Framework, and CultureTypes now returns an empty list.
Verwenden Sie andere Werte der CultureTypes-Enumeration.Use other values of the CultureTypes enumeration.
Abrufen einer KulturRetrieving culture Ab Windows 7 ruft .NET Framework 4 Kulturinformationen vom Betriebssystem ab, anstatt die Daten selbst zu speichern.Beginning with Windows 7, the .NET Framework 4 retrieves culture information from the operating system instead of storing the data itself. Darüber hinaus wird .NET Framework zum Sortieren und die Groß-/Kleinschreibung von Daten mit Windows synchronisiert.In addition, the .NET Framework synchronizes with Windows for sorting and casing data. KeineNone.
Unicode 5.1-StandardsUnicode 5.1 standards .NET Framework unterstützt jetzt alle Unicode 5.1-Zeichen, d.h. ungefähr 1400 zusätzliche Zeichen.The .NET Framework now supports all Unicode 5.1 characters -- an addition of approximately 1400 characters. Diese Zeichen umfassen neue Symbole, Pfeile, diakritische Zeichen, Satzzeichen, mathematische Symbolen, CJK-Querstriche und -Ideogramme, zusätzliche numerische Zeichen aus dem Malaiischen und Telugu sowie verschiedene myanmarische, lateinische, arabische, griechische, mongolische und kyrillische Zeichen.The additional characters include new symbols, arrows, diacritics, punctuation, mathematical symbols, CJK strokes and ideographs, additional Malayalam and Telugu numeric characters, and various Myanmar, Latin, Arabic, Greek, Mongolian, and Cyrillic characters. Die folgenden neuen Schriften werden mit Unicode 5.1 unterstützt: Sudanesisch, Lepcha, Ol Chiki, Vai, Saurashtra, Kayah Li, Rejang, Gurmukhi, Odia, Tamil, Telugu, Cham und malaiische Zeichen.The following new scripts are supported with Unicode 5.1: Sundanese, Lepcha, Ol Chiki, Vai, Saurashtra, Kayah Li, Rejang, Gurmukhi, Odia, Tamil, Telugu, and Malayalam characters and Cham. KeineNone.

AusnahmenExceptions

Namespace: System, System.Runtime.ExceptionServices; Assembly: mscorlib (in „mscorlib.dll“)Namespaces: System, System.Runtime.ExceptionServices; assembly: mscorlib (in mscorlib.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
Ausnahmen für beschädigte ProzessstatusExceptions for corrupted process state Die CLR übergibt keine Ausnahmen mehr für beschädigte Prozessstatus an Ausnahmehandler in verwaltetem Code.The CLR no longer delivers exceptions for corrupted process state to exception handlers in managed code. Diese Ausnahmen deuten darauf hin, dass der Status eines Prozesses beschädigt wurde.These exceptions indicate that the state of a process has been corrupted. Eine Ausführung Ihrer Anwendung in diesem Zustand ist nicht empfehlenswert.We do not recommend that you run your application in this state.

Weitere Informationen finden Sie unter HandleProcessCorruptedStateExceptionsAttribute und im Blogeintrag Handling Corrupted State Exceptions (Behandeln beschädigter Statusausnahmen) im englischsprachigen Blog zur CLR.For more information, see the HandleProcessCorruptedStateExceptionsAttribute and the entry Handling Corrupted State Exceptions in the CLR Inside Out blog.
Ausnahmen des AusführungsmodulsExecution engine exceptions ExecutionEngineException ist jetzt veraltet, da der Prozess aufgrund einer abfangbaren Ausnahme weiterhin ausgeführt wird.ExecutionEngineException is now obsolete, because a catchable exception will allow an unstable process to continue to run. Diese Änderung verbessert die Vorhersagbarkeit und Zuverlässigkeit in der Laufzeit.This change improves predictability and reliability in the runtime. Verwenden Sie InvalidOperationException, um die Bedingung zu signalisieren.Use an InvalidOperationException to signal the condition.

SpiegelungReflection

Namespace: System.Reflection; Assembly: mscorlib (in „mscorlib.dll“)Namespace: System.Reflection; assembly: mscorlib (in mscorlib.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
Assembly-HashalgorithmenAssembly hash algorithms Die Eigenschaft HashAlgorithm gibt jetzt AssemblyHashAlgorithm zurück, da die Laufzeit den Hashalgorithmus der Assembly, auf die verwiesen wird, nicht kennt, wenn die Assembly nicht geladen wurde.The HashAlgorithm property now returns AssemblyHashAlgorithm, because the runtime does not know the hash algorithm of the referenced assembly when the assembly is not loaded. (Dies bezieht sich auf die Verwendung der Eigenschaft für eine Assembly, auf die verwiesen wird, z.B. die von der GetReferencedAssemblies-Methode zurückgegebene.)(This refers to using the property on a referenced assembly such as that returned by the GetReferencedAssemblies method.) KeineNone.
Laden von AssemblysAssembly loading Um das redundante Laden von Assemblys zu vermeiden und den virtuellen Adressraum zu speichern, lädt die CLR nun Assemblys nur mit der Win32-MapViewOfFile-Funktion.To prevent redundant loading of assemblies and to save virtual address space, the CLR now loads assemblies by using only the Win32 MapViewOfFile function. Die LoadLibrary-Funktion wird nicht mehr zusätzlich aufgerufen.It no longer also calls the LoadLibrary function.

Diese Änderung betrifft Diagnoseanwendungen auf die folgende Art und Weise:This change affects diagnostic applications in the following ways:

* ProcessModuleCollection enthält keine Module aus einer Klassenbibliothek (DLL-Datei) mehr, wie aus einem Aufruf von Process.GetCurrentProcess().Modules abgerufen.* A ProcessModuleCollection will no longer contain any modules from a class library (.dll file), as obtained from a call to Process.GetCurrentProcess().Modules.
* Für Win32-Anwendungen, die die EnumProcessModules-Funktion verwenden, werden nicht alle verwalteten Module aufgeführt.* Win32 applications that use the EnumProcessModules function will not see all managed modules listed.
KeineNone.
Deklarierender TypDeclaring type Die Eigenschaft DeclaringType gibt jetzt ordnungsgemäß NULL zurück, wenn der Typ keinen deklarierenden Typ hat.The DeclaringType property now correctly returns null when the type does not have a declaring type. KeineNone.
DelegatenDelegates Ein Delegat löst jetzt eine ArgumentNullException statt einer NullReferenceException aus, wenn ein NULL-Wert an den Konstruktor des Delegaten übergeben wird.A delegate now throws an ArgumentNullException instead of a NullReferenceException when a null value is passed to the delegate's constructor. Stellen Sie sicher, dass jede Ausnahmebehandlung ArgumentNullException abfängt.Ensure that any exception handling catches ArgumentNullException.
Änderung des Speicherorts des globalen AssemblycachesGlobal assembly cache location change Für .NET Framework 4-Assemblys wurde der globale Assemblycache aus dem Windows-Verzeichnis (%WINDIR%) in das Unterverzeichnis „Microsoft.Net“ (%WINDIR%\Microsoft.Net) verschoben.For .NET Framework 4 assemblies, the global assembly cache has been moved from the Windows directory (%WINDIR%) to the Microsoft.Net subdirectory (%WINDIR%\Microsoft.Net). Assemblys aus früheren Versionen bleiben im älteren Verzeichnis.Assemblies from earlier versions remain in the older directory.

Die nicht verwaltete ASM_CACHE_FLAGS-Enumeration enthält das neue ASM_CACHE_ROOT_EX-Flag.The unmanaged ASM_CACHE_FLAGS enumeration contains the new ASM_CACHE_ROOT_EX flag. Dieses Flag ruft den Cachespeicherort für .NET Framework 4-Assemblys mit der Funktion GetCachePath ab.This flag gets the cache location for .NET Framework 4 assemblies, which can be obtained by the GetCachePath function.
Keine, vorausgesetzt dass Anwendungen keine expliziten Pfade zu Assemblys verwenden (nicht empfohlen)None, assuming that applications do not use explicit paths to assemblies, which is not a recommended practice.
Globaler Assemblycache (Tool)Global assembly cache tool Gacutil.exe (Global Assembly Cache-Tool) unterstützt den Shell-Plug-In-Viewer nicht mehr.The Gacutil.exe (Global Assembly Cache Tool) no longer supports the shell plugin viewer. KeineNone.

InteroperabilitätInteroperability

Namespace: System.Runtime.InteropServices; Assembly: mscorlib (in „mscorlib.dll“)Namespace: System.Runtime.InteropServices; assembly: mscorlib (in mscorlib.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
Pufferlänge (nicht verwaltete API)Buffer length (unmanaged API) Um Arbeitsspeicher zu sparen, wurde die Funktionalität des pBufferLengthOffset-Parameters für die ICorProfilerInfo2::GetStringLayout-Methode geändert und entspricht jetzt dem pStringLengthOffset-Parameter.To save memory, the functionality for the pBufferLengthOffset parameter for the ICorProfilerInfo2::GetStringLayout method has been changed to match the pStringLengthOffset parameter. Beide Parameter zeigen jetzt auf die Offsetposition der Länge der Zeichenfolge.Both parameters now point to the offset location of the string's length. Die Pufferlänge wurde aus der Darstellung der Zeichenfolgenklasse entfernt.Buffer length has been removed from the representation of the string class. Entfernen Sie alle Abhängigkeiten von der Pufferlänge.Remove any dependency on the buffer length.
JIT-DebuggenJIT debugging Um die Registrierung für das Just-in-Time-Debuggen (JIT) zu vereinfachen, verwendet der .NET Framework-Debugger jetzt nur den AeDebug-Registrierungsschlüssel, der das JIT-Debuggingverhalten für nativen Code steuert.To simplify registration for just-in-time (JIT) debugging, the .NET Framework debugger now uses only the AeDebug registry key, which controls the JIT debugging behavior for native code. Diese Änderung hat folgende Auswirkungen:This change results in the following:

* Sie können keine zwei verschiedenen Debugger mehr für verwalteten und nativen Code registrieren.* You can no longer register two different debuggers for managed and native code.
* Sie können den Debugger nicht mehr automatisch bei einem nicht interaktiven Prozess starten. Sie können Benutzer aber zu einem interaktiven Prozess auffordern.* You can no longer start the debugger automatically for a non-interactive process, but you can prompt the user for an interactive process.
* Sie werden nicht mehr benachrichtigt, wenn der Debugger nicht gestartet werden kann oder wenn es ist keinen registrierten Debugger gibt, der gestartet werden soll.* You are no longer notified when the debugger fails to start, or when there is no registered debugger that should be started.
* Automatisch gestartete Richtlinien, die von der Interaktivität von der Anwendung abhängig sind, werden nicht mehr unterstützt.* Auto-launch policies that depend on the interactivity of the application are no longer supported.
Passen Sie Debuggingvorgänge nach Bedarf an.Adjust debugging operations as required.
PlattformaufrufPlatform invoke Um die Leistung der Interoperabilität mit nicht verwaltetem Code zu verbessern, rufen falsche Aufrufkonventionen bei einem Plattformaufruf jetzt einen Fehler in der Anwendung hervor.To improve performance in interoperability with unmanaged code, incorrect calling conventions in a platform invoke now cause the application to fail. In früheren Versionen behoben hat die Marshalling-Ebene diese Fehler im Stapel gelöst.In previous versions, the marshaling layer resolved these errors up the stack. Beim Debuggen Ihrer Anwendungen in Microsoft Visual Studio 2010 werden Sie diese Fehler aufmerksam gemacht, damit Sie sie korrigieren können.Debugging your applications in Microsoft Visual Studio 2010 will alert you to these errors so you can correct them.

Bei nicht aktualisierbaren Binärdateien kann das <NetFx40_PInvokeStackResilience>-Element in der Anwendungskonfigurationsdatei einschließen, damit aufrufende Fehler im Stapel wie in früheren Versionen gelöst werden können.If you have binaries that cannot be updated, you can include the <NetFx40_PInvokeStackResilience> element in your application's configuration file to enable calling errors to be resolved up the stack as in earlier versions. Allerdings kann dies auf die Leistung Ihrer Anwendung auswirken.However, this may affect the performance of your application.
Entfernte Schnittstellen (nicht verwaltete API)Removed interfaces (unmanaged API) Um Verwirrung bei den Entwicklern zu vermeiden, wurden die folgenden Schnittstellen entfernt, da sie keine nützlichen Szenarios bereitstellen und die CLR keine Implementierung bereitgestellt oder übernommen hat:To avoid developer confusion, the following interfaces were removed, because they did not provide any useful run-time scenarios, and the CLR did not provide or accept any implementations:

* INativeImageINativeImageDependency* INativeImageINativeImageDependency
* INativeImageInstallInfo* INativeImageInstallInfo
* INativeImageEvaluate* INativeImageEvaluate
* INativeImageConverter* INativeImageConverter
* ICorModule* ICorModule
* IMetaDataConverter* IMetaDataConverter
KeineNone.

DatenData

In diesem Abschnitt werden Migrationsprobleme bei der Verwendung von Datasets und SQL-Clients, dem Entity Framework, LINQ to SQL und WCF-Datenservern (früher bekannt als ADO.NET Data Services) beschrieben.This section describes migration issues for using data sets and SQL clients, the Entity Framework, LINQ to SQL, and WCF Data Servers (formerly known as ADO.NET Data Services).

Dataset und SQL ClientDataSet and SQL Client

Die folgende Tabelle beschreibt die verbesserten Funktionen, die zuvor Einschränkungen oder andere Probleme hatten.The following table describes improvements to features that previously had limitations or other issues.

Namespaces: System.Data, System.Data.Objects.DataClasses, System.Data.SqlClient; Assemblys: System.Data (in „System.Data.dll“), System.Data.Entity (in „System.Data.Entity.dll“)Namespaces: System.Data, System.Data.Objects.DataClasses, System.Data.SqlClient; assemblies: System.Data (in System.Data.dll), System.Data.Entity (in System.Data.Entity.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1
POCO-SzenariosPOCO Scenarios Die IRelatedEnd-Schnittstelle verfügt über neue Methoden, um die Benutzerfreundlichkeit in Plain Old CLR Object-Szenarios (POCO) zu verbessern.The IRelatedEnd interface has new methods to improve its usability in Plain Old CLR Object (POCO) scenarios. Diese neuen Methoden akzeptiert ein Object statt einer IEntityWithRelationships-Entität als Parameter.These new methods take an Object instead of an IEntityWithRelationships entity as a parameter.
Bearbeiten von ZeilenEditing Rows Die IndexOf-Methode, wie von der DataView-Klasse implementiert, gibt den Wert einer bearbeiteten Zeile jetzt richtig zurück, statt -1 zurückzugeben.The IndexOf method, as implemented by the DataView class, now correctly returns the value of a row that is being edited, instead of returning -1.
EreignisseEvents Das PropertyChanged-Ereignis wird jetzt ausgelöst, wenn sich eine Zeile in einem geänderten Zustand befindet und die RejectChanges-Methode aufgerufen wird.The PropertyChanged event is now raised when a row is in a modified state and the RejectChanges method is called. Diese Änderung erleichtert es, Benutzeroberflächen-Steuerelemente zu erstellen, die den Inhalt eines DataSet-Objekts verfügbar machen.This change makes it easier to create UI controls that expose the contents of a DataSet object.
AusnahmenExceptions Die Prepare-Methode löst jetzt statt einer NullReferenceException eine InvalidOperationException aus, wenn eine Verbindung nicht festgelegt oder offen ist.The Prepare method now throws an InvalidOperationException when a connection is not set or open instead of a NullReferenceException.
Zuordnen von AnsichtenMapping Views Zuordnungsfehler in der Abfrageansicht werden jetzt zur Entwurfszeit abgefangen, statt zur Laufzeit eine NullReferenceException auszulösen.Query view mapping errors are now caught at design time instead of throwing a NullReferenceException at run time.

Die Zuordnungsvalidierung fängt den Fehler jetzt ab, bei dem zwei Zurodnungssätze in konzeptionelle Schemadefinitionssprache (CSDL) der gleichen Spalte zugeordnet sind.Mapping validation now catches the error in which two association sets in Conceptual Schema (CSDL) are mapped to the same column.
TransaktionenTransactions Wenn eine Anwendung versucht, eine Anweisung für eine Verbindung auszuführen, nachdem eine Transaktion abgeschlossen wurde (einschließlich Abbruch oder Rollback zurück), wird jetzt eine InvalidOperationException ausgelöst.If an application tries to execute a statement on a connection after a transaction has been completed (including aborted or rolled back), an InvalidOperationException is now thrown. In Vorgängerversionen wurde keine Ausnahme ausgelöst, und Sie konnten zusätzliche Befehle ausführen, auch wenn eine Transaktion abgebrochen wurde.Previous versions did not throw an exception and let you execute additional commands even if a transaction was aborted.

Entity FrameworkEntity Framework

Die folgende Tabelle beschreibt die verbesserten Funktionen, die zuvor Einschränkungen oder andere Probleme hatten.The following table describes improvements to features that previously had limitations or other issues.

Namespaces: System.Data, System.Data.Objects, System.Data.Objects.DataClasses; Assembly: System.Data.Entity (in „System.Data.Entity.dll“)Namespaces: System.Data, System.Data.Objects, System.Data.Objects.DataClasses; assembly: System.Data.Entity (in System.Data.Entity.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1
EntitätsobjekteEntity objects Es gibt nun Parität zwischen der Detach-Methode und der Status des Entitätsobjekts, wenn der SaveChanges-Methode aufgerufen wird.There is now parity between the Detach method and the state of the entity object when the SaveChanges method is called. Diese verbesserte Konsistenz verhindert, dass unerwartete Ausnahmen ausgelöst werden.This improved consistency prevents unexpected exceptions from being thrown.
Entity SQLEntity SQL Die Regeln für die Auflösung von Bezeichnern in Entity SQL wurden verbessert.Rules have been improved for identifier resolutions in Entity SQL.

Die Logik des Entity SQL-Parsers wurde für das Auflösen von mehrteiligen Bezeichnern verbessert.The Entity SQL parser has improved logic for resolving multipart identifiers.
Strukturelle AnmerkungenStructural annotations Das Entity Framework erkennt jetzt strukturelle Anmerkungen.The Entity Framework now recognizes structural annotations.
AbfragenQueries Die folgenden Verbesserungen wurden in Abfragen vorgenommen:The following improvements were made in queries:

* Eine GroupBy-Abfrage, die einen NULL-Schlüssel statt einer leeren Auflistung verwendet, wird keine Zeilen zurückgeben, unabhängig davon, ob in der Abfrage zusätzliche SELECT-Anweisungen vorhanden sind.* A GroupBy query using a null key over an empty collection will not return any rows, regardless if there are any additional selects in the query.
* Generierte SQL in LINQ- und Entity SQL-Abfragen behandeln Zeichenfolgenparameter jetzt standardmäßig als Nicht-Unicode-Werte.* Generated SQL in LINQ and Entity-SQL queries now treat string parameters as non-Unicode values by default.

LINQ to SQLLINQ to SQL

Die folgende Tabelle beschreibt die verbesserten Funktionen, die zuvor Einschränkungen oder andere Probleme hatten.The following table describes improvements to features that previously had limitations or other issues.

Namespace: System.Data.Linq; Assembly: System.Data.Linq (in „System.Data.Linq.dll“)Namespace: System.Data.Linq; assembly: System.Data.Linq (in System.Data.Linq.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1
EreignisseEvents Eine EntitySet<TEntity>-Sammlung löst jetzt das Ereignis ListChanged für die Vorgänge „Hinzufügen“ und „Entfernen“ aus, wenn EntitySet<TEntity> entladen und die Sammlung geladen wird.A EntitySet<TEntity> collection now raises the ListChanged event for add and remove operations if the EntitySet<TEntity> is unloaded, in addition to raising the event when the collection is loaded.
AbfragenQueries Skip(0) wird in LINQ to SQL-Abfragen nicht mehr ignoriert.Skip(0) is no longer ignored in LINQ to SQL queries. Abfragen, die diese Methode verwenden, können sich daher anders verhalten.As a result, queries that have this method might behave differently. In einigen Fällen ist eine OrderBy-Klausel mit Skip(0) erforderlich, und die Abfrage löst jetzt eine NotSupportedException-Ausnahme aus, wenn die OrderBy-Klausel nicht enthalten war.For example in some cases, an OrderBy clause is required with Skip(0), and the query will now throw a NotSupportedException exception if the OrderBy clause was not included.

WCF Data ServicesWCF Data Services

Die folgende Tabelle beschreibt die verbesserten Funktionen, die zuvor Einschränkungen oder andere Probleme hatten.The following table describes improvements to features that previously had limitations or other issues.

Namespaces: System.Data.Services, System.Data.Services.Client, System.Data.Services.Common, System.Data.Services.Providers; Assemblys: System.Data.Services (in „System.Data.Services.dll“), System.Data.Services.Client (in „System.Data.Services.Client.dll“)Namespaces: System.Data.Services, System.Data.Services.Client, System.Data.Services.Common, System.Data.Services.Providers; assemblies: System.Data.Services (in System.Data.Services.dll), System.Data.Services.Client (in System.Data.Services.Client.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1
Binärer BatchinhaltBatched Binary Content WCF Data Services unterstützt jetzt binären Batchinhalt in Anforderungen und-Antworten.WCF Data Services now supports batched binary content in requests and responses.
Change-InterceptorsChange interceptors Change-Interceptors werden nun für eine DELETE-Anforderung ausgeführt.Change interceptors are now executed for a delete request.

Ein Change-Interceptor ist eine Methode, die immer ausgeführt wird, wenn der Server die Anforderung empfängt, eine Entität in der Entitätenmenge zu ändern.A change interceptor is a method that runs every time a request is received by the server to modify an entity in the entity set. Er wird ausgeführt, bevor die eingehende Anforderung ausgeführt wird.It runs before the incoming request is executed. Der Change-Interceptor ermöglicht den Zugriff auf die Entität, die geändert wird, und den Vorgang, der ausgeführt wird.The change interceptor provides access to the entity that is being changed and the operation that is being performed on it.
AusnahmenExceptions Die folgenden Bedingungen lösen nun nützlichere Ausnahmen statt einer NullReferenceException aus:The following conditions now throw more useful exceptions instead of a NullReferenceException:

* Eine TimeoutException, wenn beim Aufruf eines Datendiensts ein Timeout eintritt.* A TimeoutException when a call to a data service times out.
* Eine DataServiceRequestException, wenn eine ungültige Anforderung an einen Datendienst erfolgt.* A DataServiceRequestException when a bad request is made to a data service.

Sie sollten in Ihren Anwendungen die Behandlung von Ausnahmen ändern, um die neue Ausnahmen abzufangen.In your applications, you should change exception handling to catch the new exceptions.
HeaderHeaders Die folgenden Verbesserungen wurden in Headern vorgenommen:The following improvements were made to headers:

* WCF Data Services lehnt einen eTag-Header, der einen nicht angegebenen Wert enthält, nun ordnungsgemäß ab.* WCF Data Services now correctly rejects an eTag header that has an unspecified value.
* WCF Data Services gibt nun einen Fehler zurück und führt die Anforderung für eine DELETE-Anforderung zu einem Link nicht aus, wenn die Anforderung einen if-* Header enthält.* WCF Data Services now returns an error and does not execute the request for a delete request to a link when an if-* header is in the request.
* WCF Data Services gibt nun an den Client einen Fehler im Format (Atom, JSON) zurück, das der Client im Accept-Header angegeben hat.* WCF Data Services now returns an error to the client in the format (Atom, JSON) that the client specified in the Accept header.
JSON-ReaderJSON Reader Der JavaScript Object Notation-Reader (JSON) gibt jetzt beim Lesen ordnungsgemäß einen Fehler zurück, wenn beim Verarbeiten von JSON-Nutzlasten, die an einen WCF Data Service gesendet wurden, ein einzelnes Escapezeichen, d.h. der umgekehrter Schrägstrich (\) gelesen wird.The JavaScript Object Notation (JSON) reader now correctly returns an error when it reads the single backslash ("\") escape character, when it processes JSON payloads sent to a WCF Data Service.
MergesMerges Die folgenden Verbesserungen wurden an der MergeOption-Enumeration vorgenommen:The following improvements were made to the MergeOption enumeration:

* Die Mergeoption MergeOption ändert als Ergebnis einer nachfolgenden Antwort von einem Datendienst nicht mehr die Entität auf dem Client.* The MergeOption merge option no longer modifies the entity on the client as a result of any subsequent response from a data service.
* Die Option MergeOption stimmt jetzt in dynamischen SQL-Anweisungen und in auf gespeicherten Prozeduren basierenden Updates überein.* The MergeOption option is now consistent between dynamic SQL and stored procedure-based updates.
AnforderungenRequests Die Methode OnStartProcessingRequest wird jetzt aufgerufen, bevor eine Anforderung an Datendienste verarbeitet wird.The OnStartProcessingRequest method is now called before a request to data services is processed. Dadurch funktioniert die Anforderung ordnungsgemäß für ServiceOperation-Dienste.This enables the request to work correctly for ServiceOperation services.
StreamsStreams WCF Data Services schließt nicht mehr den zugrunde liegenden Stream für Lese- und Schreibvorgänge.WCF Data Services no longer closes the underlying stream for read and write operations.
URIsURIs Escapevorgänge des WCF Data Services-Clients für URIs wurde korrigiert.The escaping of URIs by WCF Data Services client has been corrected.

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

Die folgende Tabelle beschreibt die verbesserten Funktionen, die zuvor Einschränkungen oder andere Probleme hatten.The following table describes improvements to features that previously had limitations or other issues.

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1
KonfigurationsdateienConfiguration files Um die Vererbung von Verhalten über die Hierarchie der Konfigurationsdatei zu aktivieren, unterstützt WCF jetzt das konfigurationsdateiübergreifende Zusammenführen.To enable inheritance of behaviors through the configuration file hierarchy, WCF now supports merging across configuration files.

Das Vererbungsmodell für die Konfiguration wurde erweitert, sodass Benutzer Verhalten definieren können, die auf alle Dienste auf dem Computer angewendet werden.The configuration inheritance model is now expanded to let users define behaviors that will be applied to all the services that are running on the computer.

Es kann zu Verhaltensänderungen kommen, wenn es auf unterschiedlichen Hierarchieebenen Verhalten mit demselben Namen gibt.You may encounter behavioral changes if there are behaviors with the same name at different levels of the hierarchy.
DiensthostingService hosting Sie können das Konfigurationselement <serviceHostingEnvironment> nicht mehr auf Dienstebene angeben, indem Sie der Elementdefinition das Attribut allowDefinition="MachineToApplication" hinzufügen.You can no longer specify the <serviceHostingEnvironment> configuration element at the service level by adding the attribute allowDefinition="MachineToApplication" to the element definition.

Das Element <serviceHostingEnvironment> auf Dienstebene anzugeben, ist technisch falsch und führt zu inkonsistentem Verhalten.Specifying the <serviceHostingEnvironment> element at the service level is technically incorrect and causes inconsistent behavior.

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

AnwendungenApplications

Namespaces: System.Windows, System.Windows.Controls; Assembly: PresentationFramework (in „PresentationFramework.dll“)Namespaces: System.Windows, System.Windows.Controls; assembly: PresentationFramework (in PresentationFramework.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
AusnahmebehandlungException handling Damit Fehler früher erkannt werden können, löst WPF eine TargetInvocationException aus und legt die Eigenschaft InnerException auf kritische Ausnahmen wie NullReferenceException, OutOfMemoryException, StackOverflowException und SecurityException fest, anstatt die ursprüngliche Ausnahme abzufangen.To enable errors to be detected earlier, WPF throws a TargetInvocationException and sets the InnerException property to critical exceptions, such as NullReferenceException, OutOfMemoryException, StackOverflowException, and SecurityException, instead of catching the original exception. KeineNone.
Verknüpfte RessourcenLinked resources Um das Verknüpfen zu vereinfachen, verwenden Ressourcendateien (z.B. Images), die sich an einem anderen Speicherort als der Ordnerstruktur des Projekts befinden, bei der Erstellung der Anwendung den vollständigen Pfad der Ressourcendatei anstelle des Dateinamens als Ressourcen-ID.To make linking easier, resource files (such as images) that are located in a location other than the project's folder structure use the resource file's full path instead of just its file name as the resource ID when the application is built. So kann die Anwendung die Dateien zur Laufzeit finden.The application will be able to locate the files at run time. KeineNone.
Teilweise vertrauenswürdige AnwendungenPartial-trust applications Aus Sicherheitsgründen lösen Windows-basierte, teilweise vertrauenswürdige Anwendungen, die die Steuerelemente WebBrowser oder Frame mit HTML enthalten, bei der Erstellung des Steuerelements eine SecurityException aus.For security considerations, Windows-based applications that run in partial trust and contain a WebBrowser control or a Frame control that contains HTML will throw a SecurityException when the control is created.

Browseranwendungen lösen eine Ausnahme aus und zeigen eine Meldung an, wenn alle der folgenden Bedingungen erfüllt sind:Browser applications will throw an exception and display a message if all of the following conditions are met:

Die Anwendung wird in Firefox ausgeführt.* The application is running in Firefox.
* Die teilweise vertrauenswürdige Anwendung wird in der Internetzone von nicht vertrauenswürdigen Standorten ausgeführt.* The application is running in partial trust in the Internet zone from non-trusted sites.
* Die Anwendung enthält die Steuerelemente WebBrowser oder Frame, die HTML enthalten.* The application contains a WebBrowser control or a Frame control that contains HTML.

Beachten Sie, dass Anwendungen, die an vertrauenswürdigen Standorten oder in der Intranetzone ausgeführt werden, nicht beeinträchtigt sind.Note that applications that run from trusted sites or from the intranet zone will not be affected.
Sie können die Auswirkungen dieser Änderung in Ihren Browseranwendungen wie folgt abschwächen:In your browser applications, you can ease this change by doing one of the following:

* Führen Sie die Browseranwendung als voll vertrauenswürdig aus.* Run the browser application in full trust.
* Fordern Sie Ihre Kunden auf, den Standort der Anwendung der Zone der vertrauenswürdigen Standorte hinzuzufügen.* Have customers add the application's site to the trusted sites zone.
* Fordern Sie Ihre Kunden auf, die Anwendung in Internet Explorer auszuführen.* Have customers run the application in Internet Explorer.
RessourcenverzeichnisseResource dictionaries Um Ressourcenverzeichnis auf der Designebene zu verbessern und zu verhindern, dass sie geändert werden, werden sperrbare Ressourcen, die in einem Ressourcenverzeichnis definiert und in ein Verzeichnis auf der Designebene zusammengeführt wurden, jetzt immer als gesperrt markiert und sind damit unveränderlich.To improve theme-level resource dictionaries and prevent them from changing, freezable resources that are defined in a resource dictionary and merged into a theme-level dictionary are now always marked as frozen and are immutable. Dies ist das erwartete Verhalten von sperrbaren Ressourcen.This is the expected behavior for freezable resources. Anwendungen, die eine in einem zusammengeführten Verzeichnis auf der Designebene definierte Ressource ändern, sollten die Ressource klonen und die geklonte Kopie ändern.Applications that modify a resource that is defined in a theme-level merged dictionary should clone the resource and modify the cloned copy. Alternativ haben Sie die Möglichkeit, die Ressource als x:Shared="false" zu kennzeichnen, damit ResourceDictionary bei jeder Abfrage der Ressource eine neue Kopie erstellt.Alternatively, the resource can be marked x:Shared="false" so that the ResourceDictionary creates a new copy every time the resource is queried.
Windows 7Windows 7 Damit WPF-Anwendungen besser unter Windows 7 funktionieren, wurden die folgenden Verbesserungen vorgenommen, um das Verhalten eines Fensters zu korrigieren:To make WPF applications work better on Windows 7, the following improvements were made to correct the behavior of a window:

* Zustände beim Andocken und bei Gesten funktionieren jetzt wie entsprechend der Benutzerinteraktionen erwartet.* Dock and gesture states now work as expected based on user interactions.
* Die Taskleistenbefehle Überlappend, Fenster gestapelt anzeigen und Show windows side-by-side (Fenster nebeneinander anzeigen) haben jetzt haben das richtige Verhalten und aktualisieren die richtigen Eigenschaften.* The taskbar commands Cascade windows, Show windows stacked, and Show windows side-by-side now have the correct behavior and update the appropriate properties.
* Die Eigenschaften Top, Left, Width und Height für maximierte oder minimierte Fenster enthalten jetzt, je nach Monitor, den richtigen Wiederherstellungsort des Fensters statt anderer Werte.* The Top, Left, Width, and Height properties for a maximized or minimized window now contain the correct restore location of the window instead of other values, depending on the monitor.
KeineNone.
Fensteranordnung und -transparenzWindows style and transparency Wenn Sie versuchen, WindowStyle auf einen anderen Wert als WindowStyle festzulegen, wenn AllowsTransparency true und WindowState sich selbst, also WindowState entspricht, wird InvalidOperationException ausgelöst.An InvalidOperationException is thrown if you try to set WindowStyle to a value other than WindowStyle when AllowsTransparency is true and WindowState is WindowState. Wenn Sie WindowStyle ändern müssen und AllowsTransparency true entspricht, können Sie die Win32-SetWindowLongPtr-Funktion aufrufen.If you must change the WindowStyle when AllowsTransparency is true, you can call the Win32 SetWindowLongPtr function.
XPS-ViewerXPS Viewer WPF enthält das Microsoft XML Paper Specification Essentials Pack (XPSEP) nicht.WPF does not include the Microsoft XML Paper Specification Essentials Pack (XPSEP). XPSEP nur ist im Lieferumfang von Windows 7 und Windows Vista enthalten.XPSEP is included with Windows 7 and Windows Vista.

Auf einem Computer unter Windows XP, auf dem kein .NET Framework 3.5 SP1 installiert ist, wird für das Drucken über eine andere WPF-API als der in PrintDialog WINSPOOL verwendet.On a computer that is running Windows XP without the .NET Framework 3.5 SP1 installed, printing by using a WPF API other than those in PrintDialog will rely on the WINSPOOL. Einige Funktionen des Druckers werden nicht gemeldet, und einige Druckereinstellungen werden nicht während des Druckens angewendet.Some printer capabilities will not be reported and some printer settings will not be applied during printing.
Installieren Sie bei Bedarf das Microsoft XML Paper Specification Essentials Pack.If needed, install the Microsoft XML Paper Specification Essentials Pack.

SteuerelementeControls

Namespaces: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input; Assemblys: PresentationFramework (in „PresentationFramework.dll“), PresentationCore (in „PresentationCore.dll“), WindowsBase (in „WindowsBase.dll“)Namespaces: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input; assemblies: PresentationFramework (in PresentationFramework.dll), PresentationCore (in PresentationCore.dll), WindowsBase (in WindowsBase.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
DialogfelderDialog boxes Zur Verbesserung der Zuverlässigkeit wird die Methode ShowDialog im gleichen Thread aufgerufen, der erstellt das FileDialog-Steuerelement erstellt hat.To improve reliability, the ShowDialog method is called on the same thread that created the FileDialog control. Achten Sie darauf, ein FileDialog-Steuerelement zu erstellen, und rufen Sie die Methode ShowDialog im gleichen Thread auf.Be sure to create a FileDialog control and call the ShowDialog method on the same thread.
Unverankerte FensterFloating windows Um die Logik für die Fokuswiederherstellung zu beheben, die fälschlicherweise kontinuierlich ein unverankertes Fenster reaktiviert (und es wie ein modales Dialogfeld anzeigt), wird sie jetzt an der Wiederherstellung gehindert, wenn der Kandidat kein untergeordnetes Element des Fensters ist.To fix focus restoration logic that incorrectly keeps reactivating a floating window (making it appear like a modal dialog box), focus restoration is now prevented if the candidate is not a child of the window. KeineNone.
Elemente in AuflistungenItems in collections Wenn ein Element verschoben oder einer zugrunde liegenden Auflistung hinzugefügt wird, erscheint es in CollectionView am gleichen relativen Speicherort, wenn CollectionView nicht sortiert ist.When an item is moved or added to an underlying collection, it appears in the CollectionView in the same relative location if the CollectionView is not sorted. So wird die Konsistenz zwischen der Position des Elements in der Auflistung und der zugeordneten CollectionView gewahrt.This provides consistency between the item's position in the collection and in the associated CollectionView. Verwenden Sie bei der Suche nach dem Speicherort eines Elements in einer CollectionView statt einer festen Position die Methoden ContainerFromItem oder IndexOf.Use the ContainerFromItem or IndexOf method to find the location of an item in a CollectionView instead of relying on a fixed location of an item.
LayoutsLayouts Um unnötiges erneutes Anordnen zu vermeiden, setzt das Ändern von ShowsNavigationUI nicht mehr das Layout außer Kraft und ruft keinen weiteren Layoutdurchlauf hervor.To eliminate unnecessary re-layouts, changing the ShowsNavigationUI no longer invalidates layout or causes another layout pass. Wenn Sie davon ausgehen, dass Änderungen an ShowsNavigationUI zu einem weiteren Layoutdurchlauf führen, rufen Sie nach dem Festlegen der Eigenschaft InvalidateVisual auf.If you expect that changing ShowsNavigationUI will cause another layout pass, call InvalidateVisual after you set the property.
MenüsMenus Um ClearType-Text in Menü-Popupelementen zu aktivieren, wurden Änderungen an der ControlTemplate-Klasse, dem MenuItem-Steuerelement und anderen Steuerelementen vorgenommen.To enable ClearType text in menu pop-ups, modifications were made to the ControlTemplate class and to the MenuItem control and other controls. Anwendungen sollten nicht die visuelle Struktur von Steuerelementvorlagen verwenden.Applications should not rely on the visual structure of control templates. Nur benannte Teile einer ControlTemplate sind Teil des öffentlichen Vertrags.Only named parts of a ControlTemplate are part of the public contract. Wenn eine Anwendung ein bestimmtes Objekt in einer ControlTemplate suchen muss, suchen Sie in der visuellen Struktur nach einem bestimmten Typ statt nach einer festen Position eines Objekts in der Struktur.If an application must find a certain object in a ControlTemplate, search the visual tree for a specific type instead of relying on a fixed location of an object in the tree.
NavigationNavigating Wenn ein Frame direkt zu einem Speicherort navigiert, entspricht die Eigenschaft IsNavigationInitiator nach der ursprünglichen Navigation true.If a Frame directly navigates to a location, the IsNavigationInitiator property is true after the initial navigation. Diese Änderung verhindert, dass während Startszenarios zusätzliche Ereignisse ausgelöst werden.This change prevents additional events from being raised during startup scenarios. KeineNone.
PopupelementePop-ups Der Delegat CustomPopupPlacementCallback kann jetzt während einem Layoutdurchlauf mehrfach aufgerufen werden, statt nur einmal.The CustomPopupPlacementCallback delegate can now be called multiple times during a layout pass instead of only once. Wenn Ihr CustomPopupPlacementCallback-Delegat die Position von einem Popup auf Grundlage seiner vorherigen Position berechnet, berechnen Sie die Position nur neu, wenn sich die Werte der Parameter popupSize, targetSize oder offset ändern.If your CustomPopupPlacementCallback delegate calculates the position of a Popup based on its previous position, recalculate the position only if the values of the popupSize, targetSize, or offset parameters change.
EigenschaftswerteProperty values Mit der Methode SetCurrentValue lässt sich nun eine Eigenschaft auf einen effektiven Wert festlegen, obwohl auch weiterhin alle Bindungen, Stile oder Trigger berücksichtigt werden, die sich auf die Eigenschaft auswirken.The SetCurrentValue method now lets you set a property to an effective value, although it continues to respects any binding, style, or trigger that affects the property. Autoren von Steuerelementen sollten immer dann SetCurrentValue verwenden, wenn sich der Eigenschaftswert infolge einer anderen Aktion wie der Bearbeitung durch Benutzer ändert.Control authors should use SetCurrentValue whenever the property value changes as a side-effect of some other action, including user manipulation.
TextfelderText boxes Aus Sicherheitsgründen schlagen die Methoden Copy und Cut ohne Meldung fehl, wenn sie bei partieller Vertrauenswürdigkeit aufgerufen werden.For security considerations, the Copy and Cut methods silently fail when they are called in partial trust.

Darüber hinaus wird die programmgesteuerte Ausführung der Eigenschaften Copy oder Cut für ein Steuerelement, das von TextBoxBase erbt, bei partieller Vertrauenswürdigkeit blockiert.In addition, programmatic execution of the Copy or Cut property on a control that inherits from TextBoxBase will be blocked in partial trust. Die von Benutzern initiierten Befehle „Kopieren“ und „Ausschneiden“ wie das Klicken auf eine Schaltfläche, deren Command-Eigenschaft an einen dieser Befehle gebunden ist, funktionieren.However, user-initiated copy and cut commands, such as clicking a button whose Command property is bound to one of these commands, will work. Die Ausführung standardmäßiger Kopier- und Ausschneidebefehle über Tastenkombinationen und das Kontextmenü funktioniert weiterhin bei partieller Vertrauenswürdigkeit wie zuvor.Standard copy and cut through keyboard shortcuts and the context menu will still work as before in partial trust.
Binden Sie die Befehle Copy oder Cut an eine von Benutzern initiierte Aktion, z.B. an das Klicken auf eine Schaltfläche.Bind the Copy or Cut command to a user-initiated action, such as clicking a button.

GrafikGraphics

Namespaces: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input, System.Windows.Media.Effects; Assemblys: PresentationFramework (in „PresentationFramework.dll“), PresentationCore (in „PresentationCore.dll“), WindowsBase (in „WindowsBase.dll“)Namespaces: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input, System.Windows.Media.Effects; assemblies: PresentationFramework (in PresentationFramework.dll), PresentationCore (in PresentationCore.dll), WindowsBase (in WindowsBase.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
BitmapeffekteBitmap effects Zur Verbesserung der Leistung wurden die BitmapEffect-Klasse und die Klassen, die von der BitmapEffect-Klasse erben, deaktiviert, obwohl sie weiterhin vorhanden sind.To improve performance, the BitmapEffect class and the classes that inherit from the BitmapEffect class, although still present, are disabled. Der Effekt wird mit der hardwarebeschleunigten Renderingpipeline gerendert, wenn Folgendes zutrifft:The effect will render by using the hardware-accelerated rendering pipeline if the following conditions are true:

* Die Anwendung verwendet einen DropShadowBitmapEffect oder einen BlurBitmapEffect, dessen Radius-Eigenschaft auf weniger als 100 DIU festgelegt ist.* The application uses a DropShadowBitmapEffect or a BlurBitmapEffect that has a radius property set less than 100 DIU.
* Die Grafikkarte dieses Computers, auf dem die Anwendung ausgeführt wird, unterstützt Pixelshader 2.0.* The video card on the computer that runs the application supports pixel shader 2.0.

Wenn diese Bedingungen nicht erfüllt werden, hat das BitmapEffect-Objekt keine Auswirkungen.If these conditions are not met, a BitmapEffect object will have no effect.

Außerdem erzeugt Visual Studio 2010 eine Compilerwarnung, wenn das BitmapEffect-Objekt oder eine Unterklasse erkannt wird.Also, Visual Studio 2010 will produce a compiler warning when it encounters the BitmapEffect object or a subclass.

Die PushEffect-Methode ist als veraltet markiert.The PushEffect method is marked obsolete.
Stellen Sie die Verwendung der Vorgängerversion BitmapEffect und der abgeleitete Klassen ein, und verwenden Sie stattdessen die neuen, von Effect abgeleiteten Klassen: BlurEffect, DropShadowEffect, und ShaderEffect.Discontinue using the legacy BitmapEffect and derived classes and instead use the new classes derived from Effect: BlurEffect, DropShadowEffect, and ShaderEffect.

Sie können durch Erben von der ShaderEffect-Klasse auch eigene Effekte erstellen.You can also create your own effects by inheriting from the ShaderEffect class.
BitmapframesBitmap frames Geklonte BitmapFrame-Objekte empfangen jetzt die Ereignisse DownloadProgress, DownloadCompleted und DownloadFailed.The cloned BitmapFrame objects now receive the DownloadProgress, DownloadCompleted, and DownloadFailed events. Dadurch funktionieren Images, die aus dem Web heruntergeladen und auf das Image-Steuerelement angewendet werden, über einen Style ordnungsgemäß.This enables images that are downloaded from the Web and applied to the Image control through a Style to work correctly.

Änderung am Verhalten kommen nur vor, wenn alle der folgenden Aussagen zutreffen:You will see a change in behavior only if all of the following statements are true:

* Sie abonnieren das Ereignis DownloadProgress, DownloadCompleted oder DownloadFailed.* You subscribe to the DownloadProgress, DownloadCompleted, or DownloadFailed event.
* Die Quelle des BitmapFrame stammt aus dem Web.* The source of the BitmapFrame is from the Web.
* Das BitmapFrame wird geklont, während der Download immer noch ausgeführt wird.* The BitmapFrame is cloned while the download is still in progress.
Überprüfen Sie den Absender im Ereignishandler, und ergreifen Sie nur Maßnahmen, wenn der Absender der ursprüngliche BitmapFrame ist.Check the sender in the event handler and take action only if the sender is the original BitmapFrame.
Decodieren von ImagesDecoding images Um sicherzustellen, dass eine IOException verarbeitet wird, wenn Images nicht decodiert werden können, löst die BitmapSource-Klasse bei einer fehlgeschlagenen Decodierung das Ereignis DecodeFailed aus.To prevent an IOException from not being handled when images may not decode, the BitmapSource class will raise the DecodeFailed event when it does not decode an image. Entfernen Sie jede Ausnahmebehandlung für IOException, und verwenden Sie das DecodeFailed-Ereignis für die Suche nach Decodierungsfehlern.Remove any exception handling for IOException, and use the DecodeFailed event to check for decode failure.

EingabeInput

Namespaces: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input; Assemblys: PresentationFramework (in „PresentationFramework.dll“), PresentationCore (in „PresentationCore.dll“), WindowsBase (in „WindowsBase.dll“)Namespaces: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input; assemblies: PresentationFramework (in PresentationFramework.dll), PresentationCore (in PresentationCore.dll), WindowsBase (in WindowsBase.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
Binden von BefehlsinstanzenBinding command instances Um einen Mechanismus für das Binden von auf dem Ansichtsmodell basierten Befehlsinstanzen an ansichtsbasierte Eingabegesten bereitzustellen, erbt die InputBinding-Klasse jetzt von Freezable statt von DependencyObject.To provide a mechanism to bind View-Model-based command instances to View-based input gestures, the InputBinding class now inherits from Freezable instead of DependencyObject. Die folgenden Eigenschaften sind jetzt Abhängigkeitseigenschaften:The following properties are now dependency properties:

* Command
* CommandParameter
* CommandTarget

Diese Änderung hat folgende Auswirkungen:This change results in the following:

* Ein InputBinding-Objekt wird jetzt gesperrt, wenn es registriert wird, statt veränderbar zu bleiben.* An InputBinding object is now frozen when it is registered instead of remaining mutable.
* Sie können aufgrund der Einschränkungen für die DependencyObject-Klasse nicht von mehreren Threads aus auf InputBinding-Objekte auf Instanzebene zugreifen.* You cannot access instance-level InputBinding objects from multiple threads, due to the restrictions of the DependencyObject class.
* Sie können aufgrund der Einschränkungen der Freezable-Klasse keine Eingabebindungen auf Klassenebene nach deren Registrierung mutieren.* You cannot mutate class-level input bindings after their registration, due to the restrictions of the Freezable class.
* Sie können keine Eingabebindungen auf Befehlsinstanzen angeben, die in einem Ansichtsmodell erstellt werden.* You cannot specify input bindings on command instances that are created in a View-Model.
Erstellen Sie separate Instanzen einer InputBinding-Klasse in separaten Threads, wenn Bindungen mutierbar bleiben sollen. Sperren Sie die sie andernfalls.Create separate instances of an InputBinding class on separate threads if bindings are to be mutable, or freeze them otherwise. Mutieren Sie kein statisches InputBinding auf Klassenebene, nachdem es registriert wurde.Do not mutate a class-level static InputBinding after it has been registered.
BrowseranwendungenBrowser applications WPF-Webbrowseranwendungen (.XBAP) verarbeiten jetzt Tastenereignisse wie eigenständige WPF-Anwendungen, sodass Objekte geroutete Tastenereignisse in der richtigen Reihenfolge empfangen.WPF Browser applications (.XBAP) now process key events just like stand-alone WPF applications so that objects receive routed key events in the correct order. KeineNone.
TottastenkombinationenDead key combinations WPF verbirgt Tottasten, die kein sichtbares Zeichen erzeugen, und weist stattdessen darauf hin, dass die Taste in Kombination mit der nächsten Buchstabentaste ein Zeichen erzeugt.WPF obfuscates dead keys, which produce no visible character, but instead indicates that the key is to be combined with the next letter key to produce one character. Tasteneingabeereignisse wie das KeyDownEvent-Ereignis melden, wenn eine Taste eine Tottaste ist, indem die Key-Eigenschaft auf den Key-Wert festgelegt wird.The key input events, such as the KeyDownEvent event, report when a key is a dead key by setting the Key property to the Key value. Dieses Verhalten wird erwartet, da Anwendungen in der Regel nicht auf Tastatureingaben zu reagieren, die kombinierte Zeichen erzeugen.This is usually expected behavior because applications usually do not intend to respond to keyboard input that creates a combined character. Anwendungen, die erwarten, Tasten zu lesen, die Teil von kombinierten Zeichen waren, können verborgene Tasten jetzt mit der DeadCharProcessedKey-Eigenschaft abrufen.Applications that expect to read keys that were part of combined characters can get the now obfuscated key by using the DeadCharProcessedKey property.
FocusManagerFocus manager Wenn die Methode FocusManager.GetFocusedElement(DependencyObject) an ein Element übergeben wird, dessen angefügte IsFocusScope-Eigenschaft auf true festgelegt wurde, gibt die Methode ein Element zurück, das das letzte von der Tastatur fokussierte Element innerhalb des Fokusbereichs darstellt, und nur, wenn das zurückgegebene Element zu dem gleichen PresentationSource-Objekt gehört wie das Element, das an die Methode übergeben wird.When the FocusManager.GetFocusedElement(DependencyObject) method is passed an element that has the IsFocusScope attached property set to true, the method returns an element that is the last keyboard-focused element within that focus scope if and only if the returned element belongs to the same PresentationSource object as the element that is passed to the method. KeineNone.

BenutzeroberflächenautomatisierungUI Automation

Namespaces: System.Windows, System.Windows.Automation.Peers, System.Windows.Automation.Provider, System.Windows.Controls, System.Windows.Data, System.Windows.Input; Assemblys: PresentationFramework (in „PresentationFramework.dll“), PresentationCore (in „PresentationCore.dll“), UIAutomationProvider (in „UIAutomationProvider.dll“), WindowsBase (in „WindowsBase.dll“)Namespace: System.Windows, System.Windows.Automation.Peers, System.Windows.Automation.Provider, System.Windows.Controls, System.Windows.Data, System.Windows.Input; assemblies: PresentationFramework (in PresentationFramework.dll), PresentationCore (in PresentationCore.dll), UIAutomationProvider (in UIAutomationProvider.dll), WindowsBase (in WindowsBase.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
Klassenhierarchie von AnsichtenClass hierarchy of views Die Klasse TreeViewAutomationPeer und TreeViewItemAutomationPeer erben von ItemsControlAutomationPeer statt von FrameworkElementAutomationPeer.The TreeViewAutomationPeer and TreeViewItemAutomationPeer classes inherit from ItemsControlAutomationPeer instead of FrameworkElementAutomationPeer. Wenn von der TreeViewItemAutomationPeer-Klasse geerbt und die GetChildrenCore-Methode überschrieben wird, empfiehlt es sich, ein Objekt zurückzugeben, das von der neuen TreeViewDataItemAutomationPeer-Klasse erbt.If you inherit from the TreeViewItemAutomationPeer classes and override the GetChildrenCore method, consider returning an object that inherits from the new TreeViewDataItemAutomationPeer class.
Container außerhalb des BildschirmsContainers off screen Um einen falschen Rückgabewert zu korrigieren, gibt die IsOffscreenCore-Methode jetzt ordnungsgemäß false für Elementcontainer zurück, die außerhalb der Ansicht gescrollt werden.To fix an incorrect return value, the IsOffscreenCore method now correctly returns false for item containers that are scrolled out of view. Darüber hinaus ist der Wert der Methode nicht durch Okklusion anderer Fenster oder davon betroffen, ob das Element auf einen bestimmten Monitor angezeigt wird.Also, the value of the method is not affected by occlusion by other windows, or by whether the element is visible on a specific monitor. KeineNone.
Menüs und untergeordnete ObjekteMenus and child objects Um die UI-Automatisierung von Menüs zu ermöglichen, die andere untergeordnete Elemente als MenuItem-Objekte enthalten, gibt die GetChildrenCore-Methode jetzt das AutomationPeer-Objekt eines untergeordneten UIElement-Objekts statt eines MenuItemAutomationPeer-Objekts zurück.To enable UI automation of menus that contain children other than MenuItem objects, the GetChildrenCore method now returns the AutomationPeer object of a child UIElement object, instead of a MenuItemAutomationPeer object. KeineNone.
Neue Schnittstellen und AssemblyNew interfaces and assembly Um neue Funktionen für die UI-Automatisierung einzubinden, wurden die folgenden Schnittstellen hinzugefügt:To enable new features for UI automation, the following interfaces were added:

* IItemContainerProvider
* ISynchronizedInputProvider
* IVirtualizedItemProvider
Jedes Projekt, das WPF-Automatisierungspeers erstellt, muss einen expliziten Verweis auf „UIAutomationProvider.dll“ hinzufügen.Any project that builds WPF automation peers must add an explicit reference to UIAutomationProvider.dll.
ZiehpunkteThumbs Die GetClassNameCore-Methode gibt einen Wert anstelle von NULL zurück.The GetClassNameCore method returns a value instead of null. Aus diesem Grund melden Steuerelemente wie GridSplitter, die von der Thumb-Klasse erben, einen Namen an die UI-Automatisierung.Therefore, controls controls such as GridSplitter that inherit from the Thumb class will report a name to UI Automation. KeineNone.
Virtualisierte ElementeVirtualized elements Zur Verbesserung der Leistung gibt die GetChildrenCore-Methode nur die untergeordneten Objekte zurück, die tatsächlich in der visuellen Struktur enthalten sind, statt aller untergeordneten Objekte unabhängig vom Virtualisierungsort.To improve performance, the GetChildrenCore method returns only the child objects that are actually in the visual tree, instead of all child objects, regardless of whether they are virtualized. Verwenden Sie ItemContainerPattern, um eine Iteration für alle Elemente von ItemsControlAutomationPeer durchzuführen.Use ItemContainerPattern to iterate over all items of an ItemsControlAutomationPeer.

XAMLXAML

Namespaces: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input, System.Windows.Markup; Assemblys: PresentationFramework (in „PresentationFramework.dll“), PresentationCore (in „PresentationCore.dll“), WindowsBase (in „WindowsBase.dll“)Namespaces: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input, System.Windows.Markup; assemblies: PresentationFramework (in PresentationFramework.dll), PresentationCore (in PresentationCore.dll), WindowsBase (in WindowsBase.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1 Empfohlene ÄnderungenRecommended changes
MarkuperweiterungMarkup extension WPF verwendet jetzt ordnungsgemäß immer den Wert der ProvideValue-Methode, statt in bestimmten Fällen das MarkupExtension-Objekt zurückzugeben, wenn mit einer Markuperweiterung Eigenschaften festgelegt oder ein Element in einer Auflistung erstellt wird.WPF now correctly always uses the value from the ProvideValue method instead of returning the MarkupExtension object in certain cases when a markup extension is used to set a property or to create an item in a collection. Eine Markuperweiterung kann sich in einigen Fällen selbst zurückgeben.A markup extension might return itself in some cases. Wenn Ihre Anwendung auf eine Ressource zugreift, die in einer früheren Version ein MarkupExtension-Objekt zurückgegeben hat, verweisen Sie nicht auf das MarkupExtension-Objekt, sondern auf das von ProvideValue zurückgegebene Objekt.If your application accesses a resource that returned a MarkupExtension object in earlier versions, reference the object that is returned from ProvideValue, instead of the MarkupExtension object.
AnalyseattributeParsing attributes Attribute dürfen in XAML jetzt nur einen Punkt haben.Attributes in XAML can now have only one period. Alle folgenden Attribute sind z.B. gültig:For example, the following are valid:

<Button Background="Red"/> (keine Punkte)<Button Background="Red"/> (no periods)

<Button Button.Background = "Red"/> (ein Punkt)<Button Button.Background = "Red"/> (one period)

Das folgende Attribut ist nicht mehr gültig:The following is no longer valid:

<Button Control.Button.Background = "Red"/> (mehr als ein Punkt)<Button Control.Button.Background = "Red"/> (more than one period)
Richtige XAML-Attribute mit mehr als einem PunktCorrect XAML attributes that have more than one period.

XMLXML

Die folgende Tabelle beschreibt die verbesserten Funktionen, die zuvor Einschränkungen oder andere Probleme hatten.The rows in this table describe improvements to features that previously had limitations or other issues.

Schemas und TransformationenSchema and transforms

Namespaces: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath; Assemblys: System.xml (in „System.Xml.dll“), System.Xml.Linq (in „System.Xml.Linq.dll“)Namespaces: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath; assemblies: System.Xml (in System.Xml.dll), System.Xml.Linq (in System.Xml.Linq.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1
ChamäleonschemasChameleon schemas Um Datenbeschädigung zu verhindern, werden Chamäleonschemas jetzt ordnungsgemäß geklont, wenn sie in mehreren Schemas enthalten sind.To prevent data corruption, chameleon schemas are now cloned correctly when they are included with multiple schemas.

Chamäleonschemas sind Schemas ohne Zielnamespace, und wenn sie in einem anderen XSD-Schema eingeschlossen werden, übernehmen sie den Zielnamespace des importierenden Schemas.Chameleon schemas are schemas that do not have a target namespace, and when they are included in another XSD, they take on the target namespace of the importing schema. Sie werden häufig dazu verwendet, um allgemeine Typen in einem Schema einzuschließen.They are often used to include common types into a schema.
ID-FunktionenID functions Die XSLT-id-Funktion gibt nun den richtigen Wert statt NULL zurück, wenn ein XmlReader-Objekt an eine XSL-Transformation übergeben wird.The XSLT id function now returns the correct value instead of null when an XmlReader object is passed to an XLST.

Wenn der Benutzer aus einer LINQ to XML-Klasse mit der CreateReader-Methode ein XmlReader-Objekt erstellt hat, und dieses XmlReader-Objekt an eine XSL-Transformation übergeben wurde, haben alle Instanzen der id-Funktion in XSLT zuvor NULL zurückgegeben.If the user created an XmlReader object from a LINQ to XML class by using the CreateReader method, and this XmlReader object was passed to an XSLT, any instances of the id function in the XSLT previously returned null. Dies ist kein zulässiger Rückgabewert für die id-Funktion.This is not an allowed return value for the id function.
NamespaceattributNamespace attribute Um Datenbeschädigung zu verhindern, gibt ein XPathNavigator-Objekt nun den lokalen Namen des x:xmlns-Attribut richtig zurück.To prevent data corruption, an XPathNavigator object now returns the local name of the x:xmlns attribute correctly.
NamespacedeklarationenNamespace declarations Ein XmlReader-Objekt in einer Teilstruktur erstellt keine doppelten Namespacedeklarationen innerhalb eines XML-Elements.An XmlReader object on a sub-tree no longer creates duplicate namespace declarations within one XML element.
SchemavalidierungSchema validation Um eine fehlerhafte Schemavalidierung zu verhindern, lässt die XmlSchemaSet-Klasse nun zu, dass XSD-Schemas richtig und konsistent kompiliert werden.To prevent erroneous schema validation, the XmlSchemaSet class allows for XSD schemas to be compiled correctly and consistently. Diese Schemas können andere Schemas enthalten. A.xsd kann z.B. B.xsd enthalten, das wiederum C.xsd enthalten kann.These schemas can include other schemas; for example, A.xsd can include B.xsd, which can include C.xsd. Das Kompilieren dieser Schemas führt dazu, dass der Graph mit den Abhängigkeiten durchsucht wird.Compiling any one of these causes this graph of dependencies to be traversed.
SkriptfunktionenScript functions Die function-available-Funktion gibt nicht mehr fälschlicherweise false zurück, wenn die Funktion tatsächlich verfügbar ist.The function-available function no longer incorrectly returns false when the function is actually available.
URIsURIs Die Load-Methode gibt nun den richtigen BaseURI in LINQ-Abfragen zurück.The Load method now returns the correct BaseURI in LINQ queries.

ValidierungValidation

Namespaces: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath; Assemblys: System.xml (in „System.Xml.dll“), System.Xml.Linq (in „System.Xml.Linq.dll“)Namespaces: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath; assemblies: System.Xml (in System.Xml.dll), System.Xml.Linq (in System.Xml.Linq.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1
Namespace-ResolverNamespace resolvers Die ReadContentAs-Methode ignoriert nicht mehr den empfangenenIXmlNamespaceResolver-Resolver.The ReadContentAs method no longer ignores the IXmlNamespaceResolver resolver passed to it.

In früheren Versionen wurde der angegebene Namespace-Resolver ignoriert, und stattdessen wurde XmlReader verwendet.In previous versions, the specified namespace resolver was ignored, and the XmlReader was used instead.
LeerraumWhite space Um beim Erstellen eines Readers Datenverluste zu vermeiden, verwirft die Create-Methode keinen signifikanten Leerraum mehr.To prevent data loss when you are creating a reader, the Create method no longer discards significant white space.

Die XML-Validierung erkennt den Modus mit gemischtem Inhalt, in dem Text mit XML-Markup gemischt werden kann.XML validation recognizes mixed-content mode, where text can be intermixed with XML markup. Im gemischten Modus sind jeder Leerraum wichtig und muss gemeldet werden.In mixed mode, all white space is significant and should be reported.

SchreibenWriting

Namespaces: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath; Assemblys: System.xml (in „System.Xml.dll“), System.Xml.Linq (in „System.Xml.Linq.dll“)Namespaces: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath; assemblies: System.Xml (in System.Xml.dll), System.Xml.Linq (in System.Xml.Linq.dll)

FunktionFeature Unterschiede zu 3.5 SP1Differences from 3.5 SP1
EntitätsverweiseEntity references Um Datenbeschädigung zu verhindern, werden Entitätsverweise in XML-Attribute nicht mehr zweimal in Entitäten geändert.To prevent data corruption, entity references are no longer entitized twice in XML attributes.

Wenn der Benutzer versucht hat, eine Entität in ein xmlns-Attribut oder mit der WriteEntityRef-Methode in ein xml:lang- oder xml:space-Attribut zu schreiben, wird die Entität zweimal in der Ausgabe in Entitäten geändert. Dabei werden die Daten beschädigt.If the user tried to write an entity into an xmlns attribute or into an xml:lang or xml:space attribute by using the WriteEntityRef method, the entity was entitized twice in the output, therefore corrupting the data.
Neue ZeilenbehandlungNew line handling Um Datenbeschädigung zu verhindern, berücksichtigen XmlWriter-Objekte nun die Option NewLineHandling.To prevent data corruption, XmlWriter objects respect the NewLineHandling option.

Siehe auchSee also

VerweisReference

Neue Typen und Member in .NET Framework 4New Types and Members in the .NET Framework 4

KonzepteConcepts

Migrationshandbuch zu .NET Framework 4.7, 4.6 und 4.5 Migration Guide to the .NET Framework 4
Neuigkeiten in .NET Framework What's New in the .NET Framework 4
Kompatibilität von .NET Framework-Versionen Version Compatibility in the .NET Framework
Migrieren von Office-Projektmappen in .NET Framework 4Migrating Office Solutions to the .NET Framework 4

Weitere RessourcenOther resources

Veraltete Elemente in .NET Framework What's Obsolete in the .NET Framework
Migration Issues for .NET Framework 4 Applications: Beta 2 to RTM (Migrationsprobleme in .NET Framework 4-Anwendungen: Beta 2 zu RTM)Migration Issues for .NET Framework 4 Applications: Beta 2 to RTM