Udostępnij przez


Aplikacje odwołujące się zarówno do WPF, jak i WinForms muszą uściślać typy MenuItem i ContextMenu

Aplikacje, które odwołują się zarówno do Windows Presentation Foundation (WPF), jak i Windows Forms (WinForms), muszą teraz rozróżniać niektóre typy, takie jak MenuItem i ContextMenu, aby uniknąć błędów czasu kompilacji.

Wersja wprowadzona

.NET 10

Poprzednie zachowanie

Wcześniej typy ContextMenu, DataGrid, DataGridCell, Menu, MenuItem, ToolBari StatusBar były przypisywane do przestrzeni nazw System.Windows.Controls, ponieważ nie istniały w przestrzeni nazw System.Windows.Forms w wersjach od .NET Core 3.1 do .NET 9.0.

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

Nowe zachowanie

W przestrzeni nazw System.Windows.Forms objęte typy powodują błąd kompilacji, gdy istnieje niejednoznaczne odwołanie między System.Windows.Controls a System.Windows.Forms.

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

Typ zmiany, która prowadzi do niezgodności

To zmiana niekompatybilna ze źródłem .

Przyczyna zmiany

Zmiana ułatwia migrację z programu .NET Framework, gdy nie można zaktualizować bibliotek innych firm. Aplikacja .NET 10 może nadal odwoływać się do zależności programu .NET Framework i obsługiwać błędy w czasie wykonywania.

Użyj aliasów, aby rozwiązać konflikty przestrzeni nazw. Na przykład:

using ContextMenu = System.Windows.Controls.ContextMenu;

Aby uzyskać więcej informacji, zajrzyj do dokumentacji dotyczącej konfliktów nazw aliasów .

Interfejsy API, których dotyczy problem