Приложения, ссылающиеся на WPF и WinForms, должны разграничивать типы MenuItem и ContextMenu.

Приложения, ссылающиеся как на Windows Presentation Foundation (WPF), так и на Windows Forms (WinForms), теперь должны диамбигуировать определенные типы, такие как MenuItem и ContextMenu, чтобы избежать ошибок во время компиляции.

Представленная версия

.NET 10

Предыдущее поведение

Ранее типы ContextMenu, DataGrid, DataGridCell, Menu, MenuItem, ToolBar, и StatusBar разрешались в пространство имен System.Windows.Controls, так как они не существовали в пространстве имен System.Windows.Forms в .NET Core 3.1 до .NET 9.0.

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

Новое поведение

Затронутые типы в пространстве имен System.Windows.Forms вызывают ошибку во время компиляции при наличии неоднозначной ссылки между System.Windows.Controls и System.Windows.Forms.

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

Тип изменения, нарушающего совместимость

Это изменение несовместимого источника.

Причина изменения

Это изменение упрощает миграцию из .NET Framework при невозможности обновления сторонних библиотек. Приложение .NET 10 может продолжать ссылаться на зависимости .NET Framework и обрабатывать ошибки во время выполнения.

Используйте псевдонимы для устранения конфликтов в пространствах имен. Например:

using ContextMenu = System.Windows.Controls.ContextMenu;

Дополнительные сведения см. в документации по конфликтам имен псевдонимов.

Затронутые API