Neuzuweisung von Änderungen für die Migration von .NET Framework 4.0 zu 4.5Retargeting Changes for Migration from .NET Framework 4.0 to 4.5

EinführungIntroduction

Neuzuweisungsänderungen wirken sich auf Apps aus, die für eine andere .NET Framework-Instanz neu kompiliert wurden.Retargeting changes affect apps that are recompiled to target a different .NET Framework. Dazu zählen:They include:

  • Änderungen in der Entwurfszeitumgebung.Changes in the design-time environment. Beispielsweise können Buildtools Warnungen ausgeben, obwohl dies zuvor nicht der Fall war.For example, build tools may emit warnings when previously they did not.

  • Änderungen in der Laufzeitumgebung.Changes in the runtime environment. Dies betrifft nur Apps, die speziell diese .NET Framework-Instanz als Ziel verwenden.These affect only apps that specifically target the retargeted .NET Framework. Apps, die auf frühere Versionen von .NET Framework abzielen, verhalten sich so, als würden sie in diesen Versionen ausgeführt.Apps that target previous versions of the .NET Framework behave as they did when running under those versions.

In den Artikeln, in denen Neuzuweisungsänderungen beschrieben werden, haben wir die einzelnen Punkte entsprechend ihrer erwarteten Auswirkung eingestuft:In the topics that describe retargeting changes, we have classified individual items by their expected impact, as follows:

Größer Dies ist eine wesentliche Änderung, die viele Apps beeinträchtigt oder erhebliche Änderungen des Codes erforderlich macht.Major This is a significant change that affects a large number of apps or that requires substantial modification of code.

Kleiner Dies ist eine Änderung, die eine kleine Anzahl von Apps beeinträchtigt oder geringfügige Änderungen des Codes erforderlich macht.Minor This is a change that affects a small number of apps or that requires minor modification of code.

Grenzfall Diese Änderung beeinträchtigt Apps nur in sehr spezifischen Szenarien, die nicht häufig vorkommen.Edge case This is a change that affects apps under very specific scenarios that are not common.

Transparent Diese Änderung hat keine nennenswerten Auswirkungen, die Entwickler oder Benutzer beachten müssten.Transparent This is a change that has no noticeable effect on the app's developer or user. Die App sollte keine Änderung benötigen.The app should not require modification because of this change.

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

ASP.NETASP.NET

Die Methoden MachineKey.Encode und MachineKey.Decode sind jetzt veraltetMachineKey.Encode and MachineKey.Decode methods are now obsolete

DetailsDetails Diese Methoden sind jetzt veraltet.These methods are now obsolete. Die Kompilierung von Code, der diese Methoden aufruft, erzeugt eine Compilerwarnung.Compilation of code that calls these methods produces a compiler warning.
VorschlagSuggestion Die empfohlenen Alternativen sind Protect(Byte[], String[]) und Unprotect(Byte[], String[]).The recommended alternatives are Protect(Byte[], String[]) and Unprotect(Byte[], String[]). Alternativ können die Buildwarnungen unterdrückt oder durch die Verwendung eines älteren Compilers vermieden werden.Alternatively, the build warnings can be suppressed, or they can be avoided by using an older compiler. Die APIs werden weiterhin unterstützt.The APIs are still supported.
BereichScope GeringMinor
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs

Der Abstand für mehrzeilige ASP.NET-Textfelder (TextBox) wurde bei der Verwendung von AntiXSSEncoder geändertMulti-line ASP.Net TextBox spacing changed when using AntiXSSEncoder

DetailsDetails In .NET Framework 4.0 wurden zwischen Zeilen eines mehrzeiligen Textfelds beim Postback zusätzliche Zeilen eingefügt, wenn AntiXssEncoder verwendet wird.In .NET Framework 4.0, extra lines were inserted between lines of a multi-line text box on postback, if using the AntiXssEncoder. In .NET Framework 4.5 sind diese zusätzlichen Zeilenumbrüche nicht enthalten, wenn die Web-App auf .NET Framework 4.5 ausgelegt ist.In .NET Framework 4.5, those extra line breaks are not included, but only if the web app is targeting .NET Framework 4.5
VorschlagSuggestion Beachten Sie, dass bei Web-Apps der Version 4.0, die auf .NET Framework 4.5 neu ausgelegt wurden, mehrzeilige Textfelder möglicherweise verbessert wurden, damit diese keine zusätzlichen Zeilenumbrüche mehr einfügen.Be aware that 4.0 web apps retargeted to .NET Framework 4.5 may have multi-line text boxes improved to no longer insert extra line breaks. Wenn dies nicht erwünscht ist, kann die App das alte Verhalten verwenden, wenn sie unter .NET Framework 4.5 ausgeführt wird, indem sie auf .NET Framework 4.0 ausgerichtet wird.If this is not desirable, the app can have the old behavior when running on .NET Framework 4.5 by targeting the .NET Framework 4.0.
BereichScope GeringMinor
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting

WebUtility.HtmlEncode und WebUtility.HtmlDecode führen für die BMP eine ordnungsgemäße Roundtripkonvertierung durchWebUtility.HtmlEncode and WebUtility.HtmlDecode round-trip BMP correctly

DetailsDetails Bei Anwendungen mit der Zielplattform .NET Framework 4.5 wird für Zeichen, die sich außerhalb der Basic Multilingual Plane (BMP) befinden, eine erfolgreiche Roundtripkonvertierung durchgeführt, wenn sie an die HtmlDecode(String)-Methoden übergeben werden.For applications that target the .NET Framework 4.5, characters that are outside the Basic Multilingual Plane (BMP) round-trip correctly when they are passed to the HtmlDecode(String) methods.
VorschlagSuggestion Diese Änderung sollte keine Auswirkung auf aktuelle Anwendungen haben. Wenn Sie jedoch das ursprüngliche Verhalten wiederherstellen möchten, legen Sie das Attribut targetFramework des Elements <httpRuntime> auf eine andere Zeichenfolge als "4.5" fest.This change should have no effect on current applications, but to restore the original behavior, set the targetFramework attribute of the <httpRuntime> element to a string other than "4.5". Sie können die unicodeEncodingConformance- und unicodeDecodingConformance-Attribute des <webUtility>-Konfigurationselements auch festlegen, um dieses Verhalten unabhängig von der Zielversion von .NET Framework zu steuern.You can also set the unicodeEncodingConformance and unicodeDecodingConformance attributes of the <webUtility> configuration element to control this behavior independently of the targeted version of the .NET Framework.
BereichScope Microsoft EdgeEdge
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs

ClickOnceClickOnce

Mit ClickOnce veröffentlichte Apps, die ein SHA-256-Codesignaturzertifikat verwenden, verursachen unter Windows 2003 möglicherweise einen FehlerApps published with ClickOnce that use a SHA-256 code-signing certificate may fail on Windows 2003

DetailsDetails Die ausführbare Datei ist mit SHA256 signiert.The executable is signed with SHA256. Früher wurde sie mit SHA1 signiert, unabhängig davon, ob das Codesignaturzertifikat SHA-1 oder SHA-256 war.Previously, it was signed with SHA1 regardless of whether the code-signing certificate was SHA-1 or SHA-256. Dies gilt für:This applies to:
  • Alle Anwendungen, die mit Visual Studio 2012 oder höher erstellt wurden.All applications built with Visual Studio 2012 or later.
  • Anwendungen, die mit Visual Studio 2010 oder früher auf Systemen mit vorhandenem .NET Framework 4.5 erstellt wurden.Applications built with Visual Studio 2010 or earlier on systems with the .NET Framework 4.5 present.
Darüber hinaus wird das ClickOnce-Manifest, wenn .NET Framework 4.5 oder höher vorhanden ist, auch mit SHA-256 für SHA-256-Zertifikate signiert, unabhängig von der .NET Framework-Version, mit der es kompiliert wurde.In addition, if the .NET Framework 4.5 or later is present, the ClickOnce manifest is also signed with SHA-256 for SHA-256 certificates regardless of the .NET Framework version against which it was compiled.
VorschlagSuggestion Die Änderung bei der Signierung der ausführbaren ClickOnce-Datei wirkt sich nur auf Windows Server 2003-Systeme aus. Für diese ist die Installation von „KB 938397“ erforderlich. Durch die Änderung bei der Signierung des Manifests mit SHA-256 wird selbst dann eine Laufzeitabhängigkeit von .NET Framework 4.5 oder einer höheren Version eingeführt, wenn eine App .NET Framework 4.0 oder eine niedrigere Version als Zielplattform verwendet.The change in signing the ClickOnce executable affects only Windows Server 2003 systems; they require that KB 938397 be installed.The change in signing the manifest with SHA-256 even when an app targets the .NET Framework 4.0 or earlier versions introduces a runtime dependency on the .NET Framework 4.5 or a later version.
BereichScope Microsoft EdgeEdge
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting

KernspeicherCore

Der Gültigkeitsbereich der Foreach-Iteratorvariable ist jetzt auf die Iteration beschränkt, weswegen sich die Semantik für die Abschlusserfassung (in C# 5) unterscheidetForeach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5)

DetailsDetails Ab C# 5 (Visual Studio 2012) ist der Gültigkeitsbereich von foreach-Iteratorvariablen auf die Iteration beschränkt.Beginning with C# 5 (Visual Studio 2012), foreach iterator variables are scoped within the iteration. Dies kann zu Fehlern führen, wenn der Code zuvor davon abhängig war, dass die Variablen nicht in den foreach-Abschluss einbezogen wurden.This can cause breaks if code was previously depending on the variables to not be included in the foreach's closure. Diese Änderung führt dazu, dass eine an einen Delegaten übergebene Iteratorvariable als der Wert behandelt wird, den sie zum Zeitpunkt der Erstellung des Delegaten aufwies, anstatt sie als den Wert zu behandeln, den sie zum Zeitpunkt aufwies, als der Delegat aufgerufen wurde.The symptom of this change is that an iterator variable passed to a delegate is treated as the value it has at the time the delegate is created, rather than the value it has at the time the delegate is invoked.
VorschlagSuggestion Idealerweise sollte der Code aktualisiert werden, um das neue Compilerverhalten zu erwarten.Ideally, code should be updated to expect the new compiler behavior. Wenn die alte Semantik erforderlich ist, kann die Iteratorvariable durch eine separate Variable ersetzt werden, die explizit außerhalb des Gültigkeitsbereichs der Schleife platziert wird.If the old semantics are required, the iterator variable can be replaced with a separate variable which is explicitly placed outside of the loop's scope.
BereichScope HauptversionMajor
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting

Die IAsyncResult.CompletedSynchronously-Eigenschaft muss korrekt sein, damit die resultierende Aufgabe abgeschlossen wirdIAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete

DetailsDetails Wenn Sie TaskFactory.FromAsync aufrufen, muss die Implementierung der CompletedSynchronously-Eigenschaft korrekt sein, damit die resultierende Aufgabe abgeschlossen wird.When calling TaskFactory.FromAsync, the implementation of the CompletedSynchronously property must be correct for the resulting task to complete. Das heißt, die Eigenschaft muss für den Fall, und ausschließlich für den Fall, dass die Implementierung synchron abgeschlossen wurde, „true“ zurückgeben.That is, the property must return true if, and only if, the implementation completed synchronously. Zuvor wurde die Eigenschaft nicht überprüft.Previously, the property was not checked.
VorschlagSuggestion Wenn IAsyncResult-Implementierungen nur dann ordnungsgemäß TRUE für die CompletedSynchronously-Eigenschaft zurückgeben, wenn eine Aufgabe synchron abgeschlossen wurde, tritt kein Fehler auf.If IAsyncResult implementations correctly return true for the CompletedSynchronously property only when a task completed synchronously, then no break will be observed. Benutzer sollten IAsyncResult-Implementierungen überprüfen, die sie ggf. besitzen, um sicherzustellen, dass ordnungsgemäß ausgewertet wird, ob eine Aufgabe synchron abgeschlossen wurde.Users should review IAsyncResult implementations they own (if any) to ensure that they correctly evaluate whether a task completed synchronously or not.
BereichScope Microsoft EdgeEdge
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs

List<T>.ForEach kann beim Ändern eines Listenelements eine Ausnahme auslösenList<T>.ForEach can throw exception when modifying list item

DetailsDetails Ab .NET Framework 4.5 löst ein ForEach(Action<T>)-Enumerator eine InvalidOperationException-Ausnahme aus, wenn ein Element in der aufrufenden Sammlung geändert wird.Beginning in .NET Framework 4.5, a ForEach(Action<T>) enumerator will throw an InvalidOperationException exception if an element in the calling collection is modified. Zuvor hätte dies keine Ausnahme ausgelöst, aber zu Racebedingungen geführt.Previously, this would not throw an exception but could lead to race conditions.
VorschlagSuggestion Im Idealfall sollte der Code unveränderlich sein, damit Listen nicht geändert werden, während ihre Elemente aufgezählt werden, da dies nie ein sicherer Vorgang ist.Ideally, code should be fixed to not modify lists while enumerating their elements because that is never a safe operation. Eine App kann auf .NET Framework 4.0 ausgelegt werden, um zum vorherigen Verhalten zurückzukehren.To revert to the previous behavior, though, an app may target .NET Framework 4.0.
BereichScope Microsoft EdgeEdge
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs

Die System.Uri-Analyse entspricht den Vorgaben in RFC 3987System.Uri parsing adheres to RFC 3987

DetailsDetails Die URI-Analyse hat sich seit .NET Framework 4.5 auf verschiedene Weisen geändert.URI parsing has changed in several ways in .NET Framework 4.5. Beachten Sie jedoch, dass sich diese Änderungen nur auf Code auswirken, der auf .NET Framework 4.5 ausgelegt ist.Note, however, that these changes only affect code targeting .NET Framework 4.5. Wenn eine Binärdatei auf .NET Framework 4.0 ausgelegt ist, wird das alte Verhalten beachtet.If a binary targets .NET Framework 4.0, the old behavior will be observed. Änderungen an der URI-Analyse in .NET Framework 4.5 umfassen Folgendes:Changes to URI parsing in .NET Framework 4.5 include:
  • Die URI-Analyse führt die Normalisierung und Zeichenüberprüfung gemäß den neuesten IRI-Regeln in RFC 3987 aus.URI parsing will perform normalization and character checking according to the latest IRI rules in RFC 3987.
  • Die Unicode-Normalisierungsform C wird nur für den Hostteil des URIs ausgeführt.Unicode normalization form C will only be performed on the host portion of the URI.
  • Ungültige Angabe für „Mailto“: URIs lösen nun eine Ausnahme aus.Invalid mailto: URIs will now cause an exception.
  • Nachgestellte Punkte am Ende eines Pfadsegments bleiben nun erhalten.Trailing dots at the end of a path segment are now preserved.
  • file:// -URIs versehen das ?-Zeichen nicht mit einem Escapezeichen.URIs do not escape the ? character.
  • Die Unicode-Steuerzeichen U+0080 bis U+009F werden nicht unterstützt.Unicode control characters U+0080 through U+009F are not supported.
  • Für die Kommazeichen , und %2c wird das Escapezeichen nicht automatisch entfernt.Comma characters , or %2c are not automatically unescaped.
VorschlagSuggestion Wenn die alte Semantik der .NET Framework 4.0-URI-Analyse erforderlich ist (was nicht häufig der Fall ist), kann sie durch Ausrichtung auf .NET Framework 4.0 verwendet werden.If the old .NET Framework 4.0 URI parsing semantics are necessary (they often aren't), they can be used by targeting .NET Framework 4.0. Dies kann mithilfe von TargetFrameworkAttribute für die Assembly oder auf der Seite „Projekteigenschaften“ über die Benutzeroberfläche des Projektsystems von Visual Studio erreicht werden.This can be accomplished by using a TargetFrameworkAttribute on the assembly, or through Visual Studio's project system UI in the 'project properties' page.
BereichScope HauptversionMajor
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs

Die Methode System.Uri.IsWellFormedUriString gibt für relative URIs mit einem Doppelpunktzeichen im ersten Segment FALSE zurückSystem.Uri.IsWellFormedUriString method returns false for relative URIs with a colon char in first segment

DetailsDetails Ab .NET Framework 4.5 zeigt IsWellFormedUriString(String, UriKind) für relative URIs mit einem : im ersten Segment an, dass es sich nicht um einen wohlgeformten relativen URI handelt.Beginning with the .NET Framework 4.5, IsWellFormedUriString(String, UriKind) will treat relative URIs with a : in their first segment as not well formed. Dies ist eine Änderung des IsWellFormedUriString(String, UriKind)-Verhaltens in .NET Framework 4.0, die vorgenommen wurde, um eine Übereinstimmung mit RFC3986 sicherzustellen.This is a change from IsWellFormedUriString(String, UriKind) behavior in the .NET Framework 4.0 that was made to conform to RFC3986.
VorschlagSuggestion Diese Änderung wirkt sich (wie viele andere URI-Änderungen auch) nur auf Anwendungen aus, die auf .NET Framework 4.5 (oder höher) ausgerichtet sind.This change (like many other URI changes) will only affect applications targeting the .NET Framework 4.5 (or later). Damit Sie weiterhin das alte Verhalten verwenden können, müssen Sie als Zielplattform für die App NET Framework 4.0 verwenden.To keep using the old behavior, target the app against the .NET Framework 4.0. Überprüfen Sie alternativ die URIs, bevor Sie IsWellFormedUriString(String, UriKind) aufrufen, und suchen Sie nach :-Zeichen, die Sie für die Überprüfung entfernen sollten, wenn das alte Verhalten bevorzugt wird.Alternatively, scan URI's prior to calling IsWellFormedUriString(String, UriKind) looking for : characters that you may want to remove for validation purposes, if the old behavior is desirable.
BereichScope GeringMinor
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs

Entity FrameworkEntity Framework

Die Version von Entity Framework muss mit der Version von .NET Framework übereinstimmenEntity Framework version must match the .NET Framework version

DetailsDetails Die Version von Entity Framework muss mit der Version von .NET Framework übereinstimmen.The entity framework version should be matched with the .NET framework version. Für .NET Framework 4.5 wird Entity Framework 5 empfohlen.Entity Framework 5 is recommended for .NET Framework 4.5. Bei EF 4.x in einem .NET Framework 4.5-Projekt sind im Zusammenhang mit System.ComponentModel.DataAnnotations mehrere Probleme bekannt.There are some known issues with EF 4.x in a .NET Framework 4.5 project around System.ComponentModel.DataAnnotations. In .NET 4.5 wurden diese in eine andere Assembly verschoben, daher gibt es Probleme mit der Bestimmung der zu verwendenden Anmerkungen.In .NET 4.5, these were moved to a different assembly, so there are issues determining which annotations to use.
VorschlagSuggestion Führen Sie bei Verwendung von .NET Framework 4.5 ein Upgrade auf Entity Framework 5 durch.Upgrade to Entity Framework 5 for .NET Framework 4.5
BereichScope HauptversionMajor
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting

Windows FormsWindows Forms

EncoderParameter ctor ist veraltetEncoderParameter ctor is obsolete

DetailsDetails Der EncoderParameter(Encoder, Int32, Int32, Int32, Int32)-Konstruktor ist jetzt veraltet und gibt Buildwarnungen aus, wenn er verwendet wird.The EncoderParameter(Encoder, Int32, Int32, Int32, Int32) constructor is obsolete now and will introduce build warnings if used.
VorschlagSuggestion Obwohl der EncoderParameter(Encoder, Int32, Int32, Int32, Int32)-Konstruktor weiterhin funktioniert, sollte stattdessen der folgende Konstruktor verwendet werden, um die veraltete Buildwarnung zu vermeiden, wenn Code mit .NET Framework 4.5-Tools erneut kompiliert wird: EncoderParameter(Encoder, Int32, EncoderParameterValueType, IntPtr).Although the EncoderParameter(Encoder, Int32, Int32, Int32, Int32)constructor will continue to work, the following constructor should be used instead to avoid the obsolete build warning when re-compiling code with .NET Framework 4.5 tools: EncoderParameter(Encoder, Int32, EncoderParameterValueType, IntPtr).
BereichScope GeringMinor
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs

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

WPF-TextBox.Text wird möglicherweise nicht mehr mit der Datenbindung synchronisiertWPF TextBox.Text can be out-of-sync with databinding

DetailsDetails In einigen Fällen stellt die Text-Eigenschaft einen früheren Wert des datengebundenen Eigenschaftswerts dar, wenn die Eigenschaft während eines Datenbindungsschreibvorgangs geändert wird.In some cases, the Text property reflects a previous value of the databound property value if the property is modified during a databinding write operation.
VorschlagSuggestion Dies sollte keine negativen Auswirkungen haben.This should have no negative impact. Sie können jedoch das vorherige Verhalten wiederherstellen, indem Sie die KeepTextBoxDisplaySynchronizedWithTextProperty-Eigenschaft auf false festlegen.However, you can restore the previous behavior by setting the KeepTextBoxDisplaySynchronizedWithTextProperty property to false.
BereichScope Microsoft EdgeEdge
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs

Windows Workflow Foundation (WF)Windows Workflow Foundation (WF)

Neue (mehrdeutige) Dispatcher.Invoke-Überladungen können zu unterschiedlichem Verhalten führenNew (ambiguous) Dispatcher.Invoke overloads could result in different behavior

DetailsDetails .NET Framework 4.5 wurde um neue Überladungen für Dispatcher.Invoke ergänzt, die einen Parameter vom Typ Action enthalten.The .NET Framework 4.5 adds new overloads to Dispatcher.Invoke that include a parameter of type Action. Wenn vorhandener Code erneut kompiliert wird, lösen die Compiler möglicherweise Aufrufe der Dispatcher.Invoke-Methoden, die einen Delegate-Parameter aufweisen, als Aufrufe von Dispatcher.Invoke-Methoden mit einem Action-Parameter auf.When existing code is recompiled, compilers may resolve calls to Dispatcher.Invoke methods that have a Delegate parameter as calls to Dispatcher.Invoke methods with an Action parameter. Wird ein Aufruf an eine Dispatcher.Invoke-Überladung mit einem Delegate-Parameter als Aufruf an eine Dispatcher.Invoke-Überladung mit einem Action-Parameter aufgelöst, kann es zu folgenden unterschiedlichen Verhalten kommen:If a call to a Dispatcher.Invoke overload with a Delegate parameter is resolved as a call to a Dispatcher.Invoke overload with an Action parameter, the following differences in behavior may occur:
VorschlagSuggestion Um Unklarheiten zu vermeiden (und mögliche Abweichungen bei der Ausnahmebehandlung oder bei blockierendem Verhalten), kann Code, der „Dispatcher.Invoke“ aufruft, ein leeres Objekt [] als zweiten Parameter an den Invoke-Aufruf übergeben, um sicherzustellen, dass nach der .NET Framework 4.0-Methodenüberladung aufgelöst wird.To avoid ambiguity (and potential differences in exception handling or blocking behaviors), code calling Dispatcher.Invoke can pass an empty object[] as a second parameter to the Invoke call to be sure of resolving to the .NET Framework 4.0 method overload.
BereichScope GeringMinor
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs

Einige Drag & Drop-APIs für WorkFlow sind veraltet.Some WorkFlow drag-and-drop APIs are obsolete

DetailsDetails Diese Drag & Drop-API für WorkFlow ist veraltet und löst Compilerwarnungen aus, wenn die App mit Version 4.5 neu erstellt wird.This WorkFlow drag-and-drop API is obsolete and will cause compiler warnings if the app is rebuilt against 4.5.
VorschlagSuggestion Stattdessen sollten neue DragDropHelper-APIs verwendet werden, die Vorgänge mit mehreren Objekten unterstützen.New DragDropHelper APIs that support operations with multiple objects should be used instead. Alternativ können die Buildwarnungen unterdrückt oder durch die Verwendung eines älteren Compilers vermieden werden.Alternatively, the build warnings can be suppressed or they can be avoided by using an older compiler. Die APIs werden weiterhin unterstützt.The APIs are still supported.
BereichScope GeringMinor
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs

WorkFlow 3.0-Typen sind veraltetWorkFlow 3.0 types are obsolete

DetailsDetails WWF 3.0-APIs (Windows Workflow Foundation ) (aus dem System.Workflow-Namespace) sind jetzt veraltet.Windows Workflow Foundation (WWF) 3.0 APIs (those from the System.Workflow namespace) are now obsolete.
VorschlagSuggestion Stattdessen sollten die neuen WWF 4.0-APIs (in System.Activities) verwendet werden.New WWF 4.0 APIs (in System.Activities) should be used instead. Ein Beispiel zur Verwendung der neuen APIs finden Sie hier und weitere Anleitungen sind hier verfügbar.An example of using the new APIs can be found here and further guidance is available here. Da die WWF-3.0-APIs weiterhin unterstützt werden, können sie verwendet und die Warnung zur Buildzeit vermieden werden, indem sie entweder unterdrückt oder ein älterer Compiler verwendet wird.Alternatively, since the WWF 3.0 APIs are still supported, they may be used and the build-time warning avoided either by suppressing it or by using an older compiler.
BereichScope HauptversionMajor
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting

WorkflowDesigner.Load entfernt die Symbol-Eigenschaft nichtWorkflowDesigner.Load doesn't remove symbol property

DetailsDetails Wenn für den Workflow-Designer .NET Framework 4.5 als Zielplattform verwendet und ein neu gehosteter Workflow der Version 3.5 mit der Methode Load() geladen wird, wird beim Speichern des Workflows eine XamlDuplicateMemberException ausgelöst.When targeting the .NET Framework 4.5 in the workflow designer, and loading a re-hosted 3.5 workflow with the Load() method, a XamlDuplicateMemberException is thrown while saving the workflow.
VorschlagSuggestion Dieser Fehler tritt nur auf, wenn der Workflow-Designer auf .NET Framework 4.5 ausgerichtet ist. Daher kann das Problem umgangen werden, indem WorkflowDesigner.Context.Services.GetService<DesignerConfigurationService>().TargetFrameworkName auf .NET Framework 4.0 festgelegt wird. Alternativ kann der Fehler umgangen werden, indem anstelle von Load() die Methode Load(String) zum Laden des Workflows verwendet wird.This bug only manifests when targeting .NET Framework 4.5 in the workflow designer, so it can be worked around by setting the WorkflowDesigner.Context.Services.GetService<DesignerConfigurationService>().TargetFrameworkName to the 4.0 .NET Framework.Alternatively, the issue may be avoided by using the Load(String) method to load the workflow, instead of Load().
BereichScope HauptversionMajor
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs

XML, XSLTXML, XSLT

Die XML-Schemaüberprüfung ist genauerXML schema validation is stricter

DetailsDetails In .NET Framework 4.5 ist die XML-Schemaüberprüfung genauer.In the .NET Framework 4.5, XML schema validation is more strict. Wenn Sie xsd:anyURI verwenden, um einen URI wie ein mailto-Protokoll zu überprüfen, tritt bei der Validierung ein Fehler auf, wenn der URI Leerzeichen enthält.If you use xsd:anyURI to validate a URI such as a mailto protocol, validation fails if there are spaces in the URI. In früheren Versionen von .NET Framework war die Validierung erfolgreich.In previous versions of the .NET Framework, validation succeeded. Die Änderung betrifft nur Anwendungen, die auf .NET Framework 4.5 ausgerichtet sind.The change affects only applications that target the .NET Framework 4.5.
VorschlagSuggestion Wenn eine weniger genaue Überprüfung für .NET Framework 4.0 erforderlich ist, kann die überprüfende Anwendung auf Version 4.0 von .NET Framework ausgerichtet werden.If looser .NET Framework 4.0 validation is needed, the validating application can target version 4.0 of the .NET Framework. Bei einer Neuausrichtung auf .NET Framework 4.5 sollte jedoch ein Code Review erfolgen, um sicherzustellen, dass ungültige URIs (mit Leerzeichen) nicht als Attributwerte mit dem Datentyp „anyURI“ erwartet werden.When retargeting to .NET Framework 4.5, however, code review should be done to be sure that invalid URIs (with spaces) are not expected as attribute values with the anyURI data type.
BereichScope GeringMinor
VersionVersion 4.54.5
TypType NeuzuweisungRetargeting