Compartilhar 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 WPF (Windows Presentation Foundation) e ao Windows Forms (WinForms) agora devem desambiguar determinados tipos, como MenuItem e ContextMenu, para evitar erros de 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 não existiam no namespace System.Windows.Forms do .NET Core 3.1 até o .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 de 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 disruptiva

Essa é uma alteração incompatível com a fonte.

Motivo da alteração

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 referenciar dependências do .NET Framework e lidar com erros em runtime.

Use aliases para resolver namespaces conflitantes. Por exemplo:

using ContextMenu = System.Windows.Controls.ContextMenu;

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

APIs afetadas