Partilhar via


Os aplicativos que fazem referência ao WPF e ao WinForms devem desambiguar os tipos MenuItem e ContextMenu

Os aplicativos que fazem referência ao Windows Presentation Foundation (WPF) e ao Windows Forms (WinForms) agora devem desambiguar certos tipos, como MenuItem e ContextMenu, para evitar erros em tempo de compilação.

Versão introduzida

.NET 10

Comportamento anterior

Anteriormente, os tipos ContextMenu, DataGrid, DataGridCell, Menu, MenuItem, ToolBare StatusBar seriam resolvidos para o namespace System.Windows.Controls porque eles não existiam no namespace System.Windows.Forms no .NET Core 3.1 a .NET 9.0.

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

Novo comportamento

Os tipos afetados no namespace System.Windows.Forms causam um erro em tempo de compilação quando há uma referência ambígua entre System.Windows.Controls e System.Windows.Forms.

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

Tipo de mudança de rutura

Esta é uma mudança incompatível com a fonte.

Motivo da mudança

A alteração facilita a migração do .NET Framework quando bibliotecas de terceiros não podem ser atualizadas. Um aplicativo .NET 10 pode continuar a fazer referência a dependências do .NET Framework e manipular erros em tempo de execução.

Use aliases para resolver namespaces conflitantes. Por exemplo:

using ContextMenu = System.Windows.Controls.ContextMenu;

Consulte a documentação de conflitos de nome de alias em para obter mais detalhes.

APIs afetadas