Program som refererar till både WPF och WinForms måste skilja menuItem- och ContextMenu-typerna åtskilt

Program som refererar till både Windows Presentation Foundation (WPF) och Windows Forms (WinForms) måste nu skilja vissa typer, till exempel MenuItem och ContextMenu, för att undvika kompileringsfel.

Version introducerad

.NET 10

Tidigare beteende

Tidigare skulle typerna ContextMenu, DataGrid, DataGridCell, Menu, MenuItem, ToolBaroch StatusBar matchas mot System.Windows.Controls namnområdet eftersom de inte fanns i System.Windows.Forms namnområdet i .NET Core 3.1 till .NET 9.0.

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

Nytt beteende

De berörda typerna i System.Windows.Forms namnområde orsakar ett kompileringsfel när det finns en tvetydig referens mellan System.Windows.Controls och System.Windows.Forms.

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

Typ av brytande ändring

Det här är en källinkompatibel förändring.

Orsak till ändring

Ändringen underlättar migrering från .NET Framework när bibliotek från tredje part inte kan uppdateras. Ett .NET 10-program kan fortsättningsvis referera till .NET Framework-beroenden och hantera fel under körning.

Använd alias för att lösa motstridiga namnområden. Till exempel:

using ContextMenu = System.Windows.Controls.ContextMenu;

Mer information finns i dokumentationen om aliasnamnkonflikter .

Berörda API:er