Freigeben über


Anwendungen, die sowohl auf WPF- als auch WinForms verweisen, müssen "MenuItem" und "ContextMenu"-Typen unterscheiden.

Anwendungen, die sowohl auf Windows Presentation Foundation (WPF) als auch auf Windows Forms (WinForms) verweisen, müssen jetzt bestimmte Typen, wie MenuItem und ContextMenu, unterscheiden, um Kompilierungsfehler zu vermeiden.

Eingeführte Version

.NET 10

Vorheriges Verhalten

Zuvor wurden die Typen ContextMenu, DataGrid, DataGridCell, Menu, MenuItem, ToolBar und StatusBar in den System.Windows.Controls-Namespace aufgelöst, da sie im System.Windows.Forms-Namespace in .NET Core 3.1 bis .NET 9.0 nicht vorhanden waren.

<ImplicitUsings>enable</ImplicitUsings>
<UseWindowsForms>true</UseWindowsForms>
<UseWPF>true</UseWPF>

Neues Verhalten

Die betroffenen Typen im System.Windows.Forms-Namespace verursachen einen Kompilierzeitfehler, wenn es einen mehrdeutigen Verweis zwischen System.Windows.Controls und System.Windows.Forms gibt.

CS0104 'ContextMenu' is an ambiguous reference between 'System.Windows.Controls.ContextMenu' and 'System.Windows.Forms.ContextMenu'

Art der einschneidenden Änderung

Dies ist eine mit der Quelle inkompatible Änderung.

Grund für Änderung

Die Änderung erleichtert die Migration von .NET Framework, wenn Drittanbieterbibliotheken nicht aktualisiert werden können. Eine .NET 10 Anwendung kann weiterhin auf Abhängigkeiten vom .NET Framework verweisen und Fehler zur Laufzeit behandeln.

Verwenden Sie Aliase, um widersprüchliche Namespaces zu lösen. Beispiel:

using ContextMenu = System.Windows.Controls.ContextMenu;

Weitere Details finden Sie in der Dokumentation zu Aliasnamenkonflikten .

Betroffene APIs