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

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.5 zu 4.5.1 migrieren, finden Sie in den folgenden Abschnitten weitere Informationen zu den Anwendungskompatibilitätsproblemen, die sich möglicherweise auf Ihre App auswirken können:If you are migrating from the .NET Framework 4.5 to 4.5.1, review the following topics for application compatibility issues that may affect your app:

ADO.NETADO.NET

DbParameter.Precision und DbParameter.Scale sind jetzt öffentliche virtuelle MemberDbParameter.Precision and DbParameter.Scale are now public virtual members

DetailsDetails Precision und Scale werden als öffentliche virtuelle Eigenschaften implementiert.and Scale are implemented as public virtual properties. Sie ersetzen die entsprechenden expliziten Schnittstellenimplementierungen IDbDataParameter.Precision und IDbDataParameter.Scale.They replace the corresponding explicit interface implementations, IDbDataParameter.Precision and IDbDataParameter.Scale.
VorschlagSuggestion Wenn Sie einen ADO.NET-Datenbankanbieter neu erstellen, erfordern diese Unterschiede die Anwendung des Schlüsselworts „override“ auf die Eigenschaften „Precision“ und „Scale“.When re-building an ADO.NET database provider, these differences will require the 'override' keyword to be applied to the Precision and Scale properties. Dies ist nur beim erneuten Erstellen von Komponenten erforderlich. Vorhandene Binärdateien funktionieren weiterhin.This is only needed when re-building the components; existing binaries will continue to work.
BereichScope GeringMinor
VersionVersion 4.5.14.5.1
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs

KernspeicherCore

ObsoleteAttribute wird in WinMD-Szenarios sowohl als ObsoleteAttribute als auch als DeprecatedAttribute exportiertObsoleteAttribute exports as both ObsoleteAttribute and DeprecatedAttribute in WinMD scenarios

DetailsDetails Wenn Sie eine Windows-Metadatenbibliothek (WINMD-Datei) erstellen, wird das Attribut ObsoleteAttribute als ObsoleteAttribute und als Windows.Foundation.DeprecatedAttribute exportiert.When you create a Windows Metadata library (.winmd file), the ObsoleteAttribute attribute is exported as both ObsoleteAttribute and Windows.Foundation.DeprecatedAttribute.
VorschlagSuggestion Durch die Neukompilierung von vorhandenem Quellcode, in dem das Attribut ObsoleteAttribute verwendet wird, können Warnungen generiert werden, wenn dieser Code von C++/CX oder JavaScript verarbeitet wird. Es wird davon abgeraten, sowohl ObsoleteAttribute als auch Windows.Foundation.DeprecatedAttribute in Code in verwalteten Assemblys anzuwenden, da dies zu Buildwarnungen führen kann.Recompilation of existing source code that uses the ObsoleteAttribute attribute may generate warnings when consuming that code from C++/CX or JavaScript.We do not recommend applying both ObsoleteAttribute and Windows.Foundation.DeprecatedAttribute to code in managed assemblies; it may result in build warnings.
BereichScope Microsoft EdgeEdge
VersionVersion 4.5.14.5.1
TypType NeuzuweisungRetargeting

Entity FrameworkEntity Framework

Beim Erstellen einer Entity Framework-EDMX-Datei mit Visual Studio 2013 kann der Fehler MSB4062 auftreten, wenn die Aufgabe „EntityDeploySplit“ oder „EntityClean“ verwendet wirdBuilding an Entity Framework edmx with Visual Studio 2013 can fail with error MSB4062 if using the EntityDeploySplit or EntityClean tasks

DetailsDetails MSBuild 12.0-Tools (enthalten in Visual Studio 2013) haben die MSBuild-Dateispeicherorte geändert, wodurch ältere Entity Framework-Zieldateien ungültig geworden sind.MSBuild 12.0 tools (included in Visual Studio 2013) changed MSBuild file locations, causing older Entity Framework targets files to be invalid. Das führt dazu, dass EntityDeploySplit- und EntityClean-Aufgaben fehlschlagen, da sie Microsoft.Data.Entity.Build.Tasks.dll nicht finden können.The result is that EntityDeploySplit and EntityClean tasks fail because they are unable to find Microsoft.Data.Entity.Build.Tasks.dll. Beachten Sie, dass dieses Problem aufgrund einer Änderung des Toolsets (MSBuild/VS) und nicht aufgrund einer Änderung an .NET Framework auftritt.Note that this break is because of a toolset (MSBuild/VS) change, not because of a .NET Framework change. Es tritt nur beim Upgrade von Entwicklertools und nicht beim Aktualisieren von .NET Framework auf.It will only occur when upgrading developer tools, not when merely upgrading the .NET Framework.
VorschlagSuggestion Die Entity Framework-Zieldateien wurden so korrigiert, dass sie mit dem neuen MSBuild-Layout genutzt werden können, das ab .NET Framework 4.6 verwendet wird.Entity Framework targets files are fixed to work with the new MSBuild layout beginning in the .NET Framework 4.6. Ein Upgrade auf diese Version von .NET Framework wird dieses Problem beheben.Upgrading to that version of the Framework will fix this issue. Alternativ können Sie diese Problemumgehung verwenden, um die Zieldateien direkt zu patchen.Alternatively, this workaround can be used to patch the targets files directly.
BereichScope HauptversionMajor
VersionVersion 4.5.14.5.1
TypType NeuzuweisungRetargeting

MSBuildMSBuild

Die ResolveAssemblyReference-Aufgabe warnt jetzt vor Abhängigkeiten von der falschen ArchitekturResolveAssemblyReference task now warns of dependencies with the wrong architecture

DetailsDetails Die Aufgabe gibt die Warnung MSB3270 aus, die angibt, dass ein Verweis oder eine seiner Abhängigkeiten nicht der Architektur der App entspricht.The task emits a warning, MSB3270, which indicates that a reference or any of its dependencies does not match the app's architecture. Dies erfolgt z. B., wenn eine App, die mit der AnyCPU-Option kompiliert wurde, einen x86-Verweis enthält.For example, this occurs if an app that was compiled with the AnyCPU option includes an x86 reference. Ein solches Szenario kann einen App-Fehler zur Laufzeit ergeben (in diesem Fall, wenn die App als x64-Prozess bereitgestellt wird).Such a scenario could result in an app failure at run time (in this case, if the app is deployed as an x64 process).
VorschlagSuggestion Es gibt zwei Bereiche mit Auswirkungen:There are two areas of impact:
  • Bei der Neukompilierung werden Warnungen generiert, die nicht angezeigt wurden, als die App mit einer früheren Version von MSBuild kompiliert wurde.Recompilation generates warnings that did not appear when the app was compiled under a previous version of MSBuild. Da die Warnung eine potenzielle Quelle des Laufzeitfehlers angibt, sollte sie untersucht werden.However, because the warning identifies a possible source of runtime failure, it should be investigated and addressed.
  • Wenn Warnungen wie Fehler behandelt werden, kann die Anwendung nicht kompiliert werden.If warnings are treated as errors, the app will fail to compile.
BereichScope GeringMinor
VersionVersion 4.5.14.5.1
TypType NeuzuweisungRetargeting

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

Die bidirektionale Datenbindung an eine Eigenschaft mit einem nicht öffentlichen Setter wird nicht unterstütztTwo-way data-binding to a property with a non-public setter is not supported

DetailsDetails Der Versuch, Daten ohne einen öffentlichen Setter an eine Eigenschaft zu binden, wurde nie unterstützt.Attempting to data bind to a property without a public setter has never been a supported scenario. Ab .NET Framework 4.5.1 löst dieses Szenario InvalidOperationException aus.Beginning in the .NET Framework 4.5.1, this scenario will throw an InvalidOperationException. Beachten Sie, dass diese neue Ausnahme nur für Apps ausgelöst wird, die speziell auf .NET Framework 4.5.1 abzielen.Note that this new exception will only be thrown for apps that specifically target the .NET Framework 4.5.1. Wenn eine App auf .NET Framework 4.5 ausgerichtet ist, wird der Aufruf zugelassen.If an app targets the .NET Framework 4.5, the call will be allowed. Wenn die App nicht auf eine bestimmte Version von .NET Framework ausgerichtet ist, wird die Bindung als unidirektionale Bindung behandelt.If the app does not target a particular .NET Framework version, the binding will be treated as one-way.
VorschlagSuggestion Die App sollte aktualisiert werden, um entweder die unidirektionale Bindung zu verwenden oder den Setter der Eigenschaft öffentlich zur Verfügung zu stellen.The app should be updated to either use one-way binding, or expose the property's setter publicly. Alternativ können Sie die App auf .NET Framework 4.5 ausrichten, um das alte Verhalten zu erreichen.Alternatively, targeting the .NET Framework 4.5 will cause the app to exhibit the old behavior.
BereichScope GeringMinor
VersionVersion 4.5.14.5.1
TypType NeuzuweisungRetargeting
Betroffene APIsAffected APIs