Критические изменения для миграции с .NET Framework на .NET CoreBreaking changes for migration from .NET Framework to .NET Core

Если вы переносите приложение с .NET Framework на .NET Core, критические изменения, перечисленные в этой статье, могут повлиять на работу приложения.If you're migrating an app from .NET Framework to .NET Core, the breaking changes listed in this article may affect you. Критические изменения сгруппированы по категориям, а в этих категориях — по версии .NET Core, в которых они были представлены.Breaking changes are grouped by category, and within those categories, by the version of .NET Core they were introduced in.

Примечание

Эта статья не является исчерпывающим списком критических изменений между .NET Framework и .NET Core.This article is not a complete list of breaking changes between .NET Framework and .NET Core. Здесь добавляются самые важные критические изменения, как только мы о них узнаем.The most important breaking changes are added here as we become aware of them.

CoreFXCoreFx

.NET Core 2.1.NET Core 2.1

Изменение значения по умолчанию для UseShellExecuteChange in default value of UseShellExecute

ProcessStartInfo.UseShellExecute имеет значение false по умолчанию в .NET Core.ProcessStartInfo.UseShellExecute has a default value of false on .NET Core. В .NET Framework его значение по умолчанию — true.On .NET Framework, its default value is true.

Описание измененийChange description

Process.Start позволяет запускать приложение напрямую, например с помощью кода, как Process.Start("mspaint.exe"), запускающего Paint.Process.Start lets you launch an application directly, for example, with code such as Process.Start("mspaint.exe") that launches Paint. Это также позволяет косвенно запускать связанное приложение, если для ProcessStartInfo.UseShellExecute установлено значение true.It also lets you indirectly launch an associated application if ProcessStartInfo.UseShellExecute is set to true. В .NET Framework значением по умолчанию для ProcessStartInfo.UseShellExecute является true, что означает, что такой код как Process.Start("mytextfile.txt") будет запускать Блокнот, если вы связали файлы .txt с этим редактором.On .NET Framework, the default value for ProcessStartInfo.UseShellExecute is true, meaning that code such as Process.Start("mytextfile.txt") would launch Notepad, if you've associated .txt files with that editor. Чтобы предотвратить косвенный запуск приложения на .NET Framework, необходимо явно установить false на ProcessStartInfo.UseShellExecute.To prevent indirectly launching an app on .NET Framework, you must explicitly set ProcessStartInfo.UseShellExecute to false. В .NET Core значением по умолчанию для ProcessStartInfo.UseShellExecute является значение false.On .NET Core, the default value for ProcessStartInfo.UseShellExecute is false. Это означает, что связанные по умолчанию приложения не запускаются при вызове Process.Start.This means that, by default, associated applications are not launched when you call Process.Start.

Это изменение введено в .NET Core для повышения производительности.This change was introduced in .NET Core for performance reasons. Как правило, Process.Start используется для непосредственного запуска приложения.Typically, Process.Start is used to launch an application directly. Запуск приложения напрямую не требует затрагивания оболочки Windows и влечет за собой соответствующие расходы на производительность.Launching an app directly does not need to involve the Windows shell and incur the associated performance cost. Чтобы ускорить этот вариант по умолчанию, .NET Core изменяет значение по умолчанию ProcessStartInfo.UseShellExecute на false.To make this default case faster, .NET Core changes the default value of ProcessStartInfo.UseShellExecute to false. При необходимости вы можете выбрать более медленный путь.You can opt in to the slower path if you need it.

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

2.12.1

Примечание

В более ранних версиях .NET Core UseShellExecute не был внедрен для Windows.In earlier versions of .NET Core, UseShellExecute was not implemented for Windows.

Если приложение полагается на прежнее поведение, вызовите Process.Start(ProcessStartInfo), указав для параметра UseShellExecute значение true в объекте ProcessStartInfo.If your app relies on the old behavior, call Process.Start(ProcessStartInfo) with UseShellExecute set to true on the ProcessStartInfo object.

КатегорияCategory

CoreFXCoreFx

Затронутые APIAffected APIs


Windows FormsWindows Forms

Поддержка Windows Forms была добавлена в .NET Core в версии 3.0.Windows Forms support was added to .NET Core in version 3.0. Если вы переносите приложение Windows Forms с .NET Framework на .NET Core, критические изменения, перечисленные здесь, могут повлиять на работу приложения.If you're migrating a Windows Forms app from .NET Framework to .NET Core, the breaking changes listed here may affect your app.

.NET Core 3.1.NET Core 3.1

Удаленные элементы управленияRemoved controls

Начиная с .NET Core 3.1, некоторые элементы управления Windows Forms больше не доступны.Starting in .NET Core 3.1, some Windows Forms controls are no longer available.

Описание измененийChange description

Начиная с .NET Core 3.1, различные элементы управления Windows Forms больше не доступны.Starting with .NET Core 3.1, various Windows Forms controls are no longer available. В .NET Framework 2.0 они были заменены элементами управления с улучшенной структурой и поддержкой.Replacement controls that have better design and support were introduced in .NET Framework 2.0. Нерекомендуемые элементы управления были ранее удалены из панелей элементов конструктора, но по-прежнему были доступны для использования.The deprecated controls were previously removed from designer toolboxes but were still available to be used.

Следующие типы больше не доступны.The following types are no longer available:

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

3.13.1

Каждый удаленный элемент управления имеет рекомендуемую замену.Each removed control has a recommended replacement control. См. таблицу ниже.Refer to the following table:

Удаленный элемент управления (API)Removed control (API) Рекомендуемая заменаRecommended replacement Связанные удаленные интерфейсы APIAssociated APIs that are removed
DataGridDataGrid DataGridViewDataGridView DataGridCell, DataGridRow, DataGridTableCollection, DataGridColumnCollection, DataGridTableStyle, DataGridColumnStyle, DataGridLineStyle, DataGridParentRowsLabel, DataGridParentRowsLabelStyle, DataGridBoolColumn, DataGridTextBox, GridColumnStylesCollection, GridTableStylesCollection, HitTestTypeDataGridCell, DataGridRow, DataGridTableCollection, DataGridColumnCollection, DataGridTableStyle, DataGridColumnStyle, DataGridLineStyle, DataGridParentRowsLabel, DataGridParentRowsLabelStyle, DataGridBoolColumn, DataGridTextBox, GridColumnStylesCollection, GridTableStylesCollection, HitTestType
ToolBarToolBar ToolStripToolStrip ToolBarAppearanceToolBarAppearance
ToolBarButtonToolBarButton ToolStripButtonToolStripButton ToolBarButtonClickEventArgs, ToolBarButtonClickEventHandler, ToolBarButtonStyle, ToolBarTextAlignToolBarButtonClickEventArgs, ToolBarButtonClickEventHandler, ToolBarButtonStyle, ToolBarTextAlign
ContextMenuContextMenu ContextMenuStripContextMenuStrip
МенюMenu ToolStripDropDown, ToolstripDropDownMenuToolStripDropDown, ToolstripDropDownMenu MenuItemCollectionMenuItemCollection
MainMenuMainMenu MenuStripMenuStrip
MenuItemMenuItem ToolstripMenuItemToolstripMenuItem

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs


Событие CellFormatting не возникает при отображении подсказкиCellFormatting event not raised if tooltip is shown

DataGridView теперь отображает всплывающие подсказки для ошибок и текста в ячейке при наведении указателя мыши и при выборе с помощью клавиатуры.A DataGridView now shows a cell's text and error tooltips when hovered by a mouse and when selected via the keyboard. Если подсказка отображается, событие DataGridView.CellFormatting не возникает.If a tooltip is shown, the DataGridView.CellFormatting event is not raised.

Описание измененийChange description

До .NET Core 3.1 DataGridView, у которого для свойства ShowCellToolTips было задано значение true, отображал подсказку для ошибок и текста в ячейке при наведении указателя мыши на эту ячейку.Prior to .NET Core 3.1, a DataGridView that had the ShowCellToolTips property set to true showed a tooltip for a cell's text and errors when the cell was hovered by a mouse. Подсказки не отображались при выборе ячейки с помощью клавиатуры (например, с помощью клавиши TAB, сочетаний клавиш или клавиш со стрелками).Tooltips were not shown when a cell was selected via the keyboard (for example, by using the Tab key, shortcut keys, or arrow navigation). Если пользователь изменил ячейку, а затем, пока DataGridView находился в режиме редактирования, навел указатель на ячейку, для которой не задано свойство ToolTipText, возникало событие CellFormatting для форматирования текста ячейки, отображаемого в ней.If the user edited a cell, and then, while the DataGridView was still in edit mode, hovered over a cell that did not have the ToolTipText property set, a CellFormatting event was raised to format the cell's text for display in the cell.

Чтобы удовлетворить требованиям стандартов специальных возможностей, начиная с .NET Core 3.1, DataGridView, у которого для свойства ShowCellToolTips задано значение true, отображает подсказки для ошибок и текста ячейки не только при наведении указателя мыши, но и при выборе ячейки с помощью клавиатуры.To meet accessibility standards, starting in .NET Core 3.1, a DataGridView that has the ShowCellToolTips property set to true shows tooltips for a cell's text and errors not only when the cell is hovered, but also when it's selected via the keyboard. Как следствие этого изменения событие CellFormatting не возникает, когда указатель наводится на ячейки, для которых не задано свойство ToolTipText, пока DataGridView находится в режиме редактирования.As a consequence of this change, the CellFormatting event is not raised when cells that don't have the ToolTipText property set are hovered while the DataGridView is in edit mode. Событие не возникает, так как содержимое ячейки, на которую наведен указатель, выводится в виде подсказки, а не отображается в ячейке.The event is not raised because the content of the hovered cell is shown as a tooltip instead of being displayed in the cell.

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

3.13.1

Выполните рефакторинг всего кода, зависящего от события CellFormatting, когда DataGridView находится в режиме редактирования.Refactor any code that depends on the CellFormatting event while the DataGridView is in edit mode.

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs

Невозможно обнаружить с помощью анализа API.Not detectable via API analysis.


.NET Core 3.0.NET Core 3.0

Шрифт элемента управления по умолчанию изменен на Segoe UI 9 птDefault control font changed to Segoe UI 9 pt

Описание измененийChange description

В .NET Framework свойству Control.DefaultFont присвоено значение Microsoft Sans Serif 8 pt.In .NET Framework, the Control.DefaultFont property was set to Microsoft Sans Serif 8 pt. На следующем рисунке показано окно, в котором используется шрифт по умолчанию.The following image shows a window that uses the default font.

Шрифт по умолчанию для элемента управления в .NET Framework

Начиная с .NET Core 3.0 шрифтом по умолчанию является Segoe UI 9 pt (тот же шрифт, что и SystemFonts.MessageBoxFont).Starting in .NET Core 3.0, the default font is set to Segoe UI 9 pt (the same font as SystemFonts.MessageBoxFont). В результате этого изменения размер форм и элементов управления увеличен на 27 % с учетом увеличенного размера нового шрифта по умолчанию.As a result of this change, forms and controls are sized about 27% larger to account for the larger size of the new default font. Пример:For example:

Шрифт по умолчанию для элемента управления в .NET Core

Это изменение было внесено в соответствии с рекомендациями по пользовательскому интерфейсу Windows.This change was made to align with Windows user experience (UX) guidelines.

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

3.03.0

Так как размер форм и элементов управления изменился, убедитесь, что приложение отображается правильно.Because of the change in the size of forms and controls, ensure that your application renders correctly.

Чтобы оставить исходный шрифт, задайте для формы шрифт по умолчанию: Microsoft Sans Serif 8 pt.To retain the original font, set your form's default font to Microsoft Sans Serif 8 pt. Пример:For example:

public MyForm()
{
    InitializeComponent();
    Font = new Font(new FontFamily("Microsoft Sans Serif"), 8f);
}

КатегорияCategory

  • Windows FormsWindows Forms

Затронутые APIAffected APIs

Отсутствует.None.


Модернизация FolderBrowserDialogModernization of the FolderBrowserDialog

В приложениях Windows Forms для .NET Core в элемент управления FolderBrowserDialog внесены изменения.The FolderBrowserDialog control has changed in Windows Forms applications for .NET Core.

Описание измененийChange description

В Windows Forms в .NET Framework для элемента управления FolderBrowserDialog используется следующее диалоговое окно:In the .NET Framework, Windows forms uses the following dialog for the FolderBrowserDialog control:

FolderBrowserDialogControl в .NET Framework

В .NET Core 3.0 в Windows Forms используется более новый элемент управления на основе COM, появившийся в Windows Vista:In .NET Core 3.0, Windows Forms users a newer COM-based control that was introduced in Windows Vista:

FolderBrowserDialogControl в .NET Core

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

3.03.0

Диалоговое окно будет обновлено автоматически.The dialog will be upgraded automatically.

Если вы хотите оставить исходное диалоговое окно, перед отображением диалогового окна задайте для свойства FolderBrowserDialog.AutoUpgradeEnabled значение false, как показано в следующем фрагменте кода:If you desire to retain the original dialog, set the FolderBrowserDialog.AutoUpgradeEnabled property to false before showing the dialog, as illustrated by the following code fragment:

var dialog = new FolderBrowserDialog();
dialog.AutoUpgradeEnabled = false;
dialog.ShowDialog();

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs


Атрибут SerializableAttribute удален из некоторых типов Windows FormsSerializableAttribute removed from some Windows Forms types

Атрибут SerializableAttribute был удален из некоторых классов Windows Forms, для которых нет известных сценариев двоичной сериализации.The SerializableAttribute has been removed from some Windows Forms classes that have no known binary serialization scenarios.

Описание измененийChange description

Следующие типы помечаются в .NET Framework атрибутом SerializableAttribute, который удален в .NET Core:The following types are decorated with the SerializableAttribute in .NET Framework, but the attribute has been removed in .NET Core:

Механизм сериализации всегда имел серьезные проблемы в плане обслуживания и безопасности.Historically, this serialization mechanism has had serious maintenance and security concerns. Поддержка SerializableAttribute для типов означает, что их необходимо проверять на наличие изменений сериализации в разных версиях, а также, возможно, на разных платформах.Maintaining SerializableAttribute on types means those types must be tested for version-to-version serialization changes and potentially framework-to-framework serialization changes. Это затрудняет развитие таких типов и делает их обслуживание затратнее.This makes it harder to evolve those types and can be costly to maintain. Для этих типов нет известных сценариев двоичной сериализации, благодаря чему удаление атрибута имеет минимальные последствия.These types have no known binary serialization scenarios, which minimizes the impact of removing the attribute.

Дополнительные сведения см. в разделе Двоичная сериализация.For more information, see Binary serialization.

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

3.0, предварительная версия 93.0 Preview 9

Измените код, работа которого зависит от возможности сериализации этих типов.Update any code that may depend on these types being marked as serializable.

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs

  • НетNone

Параметр совместимости AllowUpdateChildControlIndexForTabControls не поддерживаетсяAllowUpdateChildControlIndexForTabControls compatibility switch not supported

Параметр совместимости Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls поддерживается в Windows Forms в .NET Framework 4.6 и более поздних версиях, но не поддерживается в Windows Forms, начиная с версии .NET Core 3.0.The Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls compatibility switch is supported in Windows Forms on .NET Framework 4.6 and later versions but is not supported in Windows Forms starting with .NET Core 3.0.

Описание измененийChange description

В .NET Framework 4.6 и более поздних версиях при выборе вкладки ее коллекция элементов управления переупорядочивается.In .NET Framework 4.6 and later versions, selecting a tab reorders its control collection. Параметр совместимости Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls позволяет приложению отменить переупорядочивание, если оно не требуется.The Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls compatibility switch allows an application to skip this reordering when this behavior is undesirable.

В .NET Core параметр Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls не поддерживается.In .NET Core, the Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls switch is not supported.

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

3.0, предварительная версия 93.0 Preview 9

Удалите параметр.Remove the switch. Он не поддерживается, и альтернативного варианта нет.The switch is not supported, and no alternative functionality is available.

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs

  • ОтсутствуютNone

Параметр совместимости DomainUpDown.UseLegacyScrolling не поддерживаетсяDomainUpDown.UseLegacyScrolling compatibility switch not supported

Параметр совместимости Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling, появившийся в .NET Framework 4.7.1, не поддерживается в Windows Forms в .NET Core 3.0.The Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling compatibility switch, which was introduced in .NET Framework 4.7.1, is not supported in Windows Forms on .NET Core 3.0.

Описание измененийChange description

Начиная с версии .NET Framework 4.7.1, параметр совместимости Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling позволял разработчикам отказаться от независимых действий DomainUpDown.DownButton() и DomainUpDown.UpButton().Starting with the .NET Framework 4.7.1, the Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling compatibility switch allowed developers to opt-out of independent DomainUpDown.DownButton() and DomainUpDown.UpButton() actions. Параметр восстанавливал прежнее поведение, при котором действие DomainUpDown.UpButton() игнорируется, если присутствует текст контекста, и разработчику необходимо использовать действие DomainUpDown.DownButton() для элемента управления перед использованием действия DomainUpDown.UpButton().The switch restored the legacy behavior, in which the DomainUpDown.UpButton() is ignored if context text is present, and the developer is required to use DomainUpDown.DownButton() action on the control before the DomainUpDown.UpButton() action. Дополнительные сведения см. в статье Элемент <AppContextSwitchOverrides>.For more information, see <AppContextSwitchOverrides> element.

В .NET Core параметр Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling не поддерживается.In .NET Core, the Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling switch is not supported.

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

3.0, предварительная версия 93.0 Preview 9

Удалите параметр.Remove the switch. Он не поддерживается, и альтернативного варианта нет.The switch is not supported, and no alternative functionality is available.

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs


Параметр совместимости DoNotLoadLatestRichEditControl не поддерживаетсяDoNotLoadLatestRichEditControl compatibility switch not supported

Параметр совместимости Switch.System.Windows.Forms.UseLegacyImages, появившийся в .NET Framework 4.7.1, не поддерживается в Windows Forms в .NET Core 3.0.The Switch.System.Windows.Forms.UseLegacyImages compatibility switch, which was introduced in .NET Framework 4.7.1, is not supported in Windows Forms on .NET Core 3.0.

Описание измененийChange description

В .NET Framework 4.6.2 и предыдущих версиях элемент управления RichTextBox создавал экземпляр элемента управления Win32 RichEdit версии 3.0, а для приложений, предназначенных для .NET Framework 4.7.1, элемент управления RichTextBox создавал экземпляр элемента управления RichEdit версии 4.1 (в msftedit.dll).In the .NET Framework 4.6.2 and previous versions, the RichTextBox control would instantiate the Win32 RichEdit control v3.0, and for applications that target .NET Framework 4.7.1, the RichTextBox control would instantiate RichEdit v4.1 (in msftedit.dll). Параметр совместимости Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl был введен для того, чтобы в приложениях, предназначенных для .NET Framework 4.7.1 и более поздних версий, можно было отказаться от использования нового элемента управления RichEdit версии 4.1 и использовать вместо него прежнюю версию 3.The Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl compatibility switch was introduced to allow applications that target .NET Framework 4.7.1 and later versions to opt-out of the new RichEdit v4.1 control and use the old RichEdit v3 control instead.

В .NET Core параметр Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl не поддерживается.In .NET Core, the Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl switch is not supported. Поддерживаются только новые версии элемента управления RichTextBox.Only new versions of the RichTextBox control are supported.

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

3.0, предварительная версия 93.0 Preview 9

Удалите параметр.Remove the switch. Он не поддерживается, и альтернативного варианта нет.The switch is not supported, and no alternative functionality is available.

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs


Параметр совместимости DoNotSupportSelectAllShortcutInMultilineTextBox не поддерживаетсяDoNotSupportSelectAllShortcutInMultilineTextBox compatibility switch not supported

Параметр совместимости Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox, появившийся в .NET Framework 4.6.1, не поддерживается в Windows Forms в .NET Core 3.0.The Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox compatibility switch, which was introduced in .NET Framework 4.6.1, is not supported in Windows Forms on .NET Core 3.0.

Описание измененийChange description

Начиная с .NET Framework 4.6.1, при нажатии клавиш CTRL + A в элементе управления TextBox выделяется весь текст.Starting with .NET Framework 4.6.1, selecting the Ctrl + A shortcut key in a TextBox control selected all text. В .NET Framework 4.6 и более ранних версиях при нажатии клавиш CTRL + A выделение всего текста не происходило, если свойства Textbox.ShortcutsEnabled и TextBox.Multiline имели значение true.In .NET Framework 4.6 and previous versions, selecting the Ctrl + A shortcut key failed to select all text if the Textbox.ShortcutsEnabled and TextBox.Multiline properties were both set to true. Параметр совместимости Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox появился в .NET Framework 4.6.1 для восстановления прежнего поведения.The Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox compatibility switch was introduced in .NET Framework 4.6.1 to retain the original behavior. Дополнительные сведения см. в разделе TextBox.ProcessCmdKey.For more information see TextBox.ProcessCmdKey.

В .NET Core параметр Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox не поддерживается.In .NET Core, the Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox switch is not supported.

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

3.0, предварительная версия 93.0 Preview 9

Удалите параметр.Remove the switch. Он не поддерживается, и альтернативного варианта нет.The switch is not supported, and no alternative functionality is available.

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs

  • ОтсутствуютNone

Параметр совместимости DontSupportReentrantFilterMessage не поддерживаетсяDontSupportReentrantFilterMessage compatibility switch not supported

Параметр совместимости Switch.System.Windows.Forms.DontSupportReentrantFilterMessage, появившийся в .NET Framework 4.6.1, не поддерживается в Windows Forms в .NET Core 3.0.The Switch.System.Windows.Forms.DontSupportReentrantFilterMessage compatibility switch, which was introduced in .NET Framework 4.6.1, is not supported in Windows Forms on .NET Core 3.0.

Описание измененийChange description

Начиная с .NET Framework 4.6.1, параметр совместимости Switch.System.Windows.Forms.DontSupportReentrantFilterMessage устраняет возможные исключения IndexOutOfRangeException при вызове сообщения Application.FilterMessage с пользовательской реализацией IMessageFilter.PreFilterMessage.Starting with the .NET Framework 4.6.1, the Switch.System.Windows.Forms.DontSupportReentrantFilterMessage compatibility switch addresses possible IndexOutOfRangeException exceptions when the Application.FilterMessage message is called with a custom IMessageFilter.PreFilterMessage implementation. Дополнительные сведения см. в разделе Устранение рисков. Пользовательские реализации IMessageFilter.PreFilterMessage.For more information, see Mitigation: Custom IMessageFilter.PreFilterMessage Implementations.

В .NET Core параметр Switch.System.Windows.Forms.DontSupportReentrantFilterMessage не поддерживается.In .NET Core, the Switch.System.Windows.Forms.DontSupportReentrantFilterMessage switch is not supported.

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

3.0, предварительная версия 93.0 Preview 9

Удалите параметр.Remove the switch. Он не поддерживается, и альтернативного варианта нет.The switch is not supported, and no alternative functionality is available.

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs


Параметр совместимости EnableVisualStyleValidation не поддерживаетсяEnableVisualStyleValidation compatibility switch not supported

Параметр совместимости Switch.System.Windows.Forms.EnableVisualStyleValidation не поддерживается в Windows Forms в .NET Core 3.0.The Switch.System.Windows.Forms.EnableVisualStyleValidation compatibility switch is not supported in Windows Forms on .NET Core 3.0.

Описание измененийChange description

В .NET Framework параметр совместимости Switch.System.Windows.Forms.EnableVisualStyleValidation позволял приложению отказаться от проверки визуальных стилей, предоставленных в числовой форме.In .NET Framework, the Switch.System.Windows.Forms.EnableVisualStyleValidation compatibility switch allowed an application to opt out of validation of visual styles supplied in a numeric form.

В .NET Core параметр Switch.System.Windows.Forms.EnableVisualStyleValidation не поддерживается.In .NET Core, the Switch.System.Windows.Forms.EnableVisualStyleValidation switch is not supported.

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

3.0, предварительная версия 93.0 Preview 9

Удалите параметр.Remove the switch. Он не поддерживается, и альтернативного варианта нет.The switch is not supported, and no alternative functionality is available.

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs

  • ОтсутствуютNone

Параметр совместимости UseLegacyContextMenuStripSourceControlValue не поддерживаетсяUseLegacyContextMenuStripSourceControlValue compatibility switch not supported

Параметр совместимости Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue, появившийся в .NET Framework 4.7.2, не поддерживается в Windows Forms в .NET Core 3.0.The Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue compatibility switch, which was introduced in .NET Framework 4.7.2, is not supported in Windows Forms on .NET Core 3.0.

Описание измененийChange description

Начиная с версии .NET Framework 4.7.2, параметр совместимости Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue позволяет разработчикам отказаться от нового поведения свойства ContextMenuStrip.SourceControl, которое теперь возвращает ссылку на систему управления версиями.Starting with the .NET Framework 4.7.2, the Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue compatibility switch allows the developer to opt out of the new behavior of the ContextMenuStrip.SourceControl property, which now returns a reference to the source control. Ранее это свойство возвращало null.The previous behavior of the property was to return null. Дополнительные сведения см. в статье Элемент <AppContextSwitchOverrides>.For more information, see <AppContextSwitchOverrides> element.

В .NET Core параметр Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue не поддерживается.In .NET Core, the Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue switch is not supported.

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

3.0, предварительная версия 93.0 Preview 9

Удалите параметр.Remove the switch. Он не поддерживается, и альтернативного варианта нет.The switch is not supported, and no alternative functionality is available.

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs


Параметр совместимости UseLegacyImages не поддерживаетсяUseLegacyImages compatibility switch not supported

Параметр совместимости Switch.System.Windows.Forms.UseLegacyImages, появившийся в .NET Framework 4.8, не поддерживается в Windows Forms в .NET Core 3.0.The Switch.System.Windows.Forms.UseLegacyImages compatibility switch, which was introduced in .NET Framework 4.8, is not supported in Windows Forms on .NET Core 3.0.

Описание измененийChange description

Начиная с .NET Framework 4.8, параметр совместимости Switch.System.Windows.Forms.UseLegacyImages устраняет возможные проблемы с масштабированием изображений в сценариях ClickOnce в средах с высоким DPI.Starting with the .NET Framework 4.8, the Switch.System.Windows.Forms.UseLegacyImages compatibility switch addressed possible image scaling issues in ClickOnce scenarios in high DPI environments. Если задано значение true, параметр позволяет пользователю восстановить прежний способ масштабирования изображений при высоком уровне DPI, когда масштаб составляет более 100 %.When set to true, the switch allows the user to restore legacy image scaling on high DPI displays whose scale is set to greater than 100%. Дополнительные сведения см. в заметках о выпуске .NET Framework 4.8 в GitHub.For more information, see .NET Framework 4.8 Release Notes on GitHub.

В .NET Core параметр Switch.System.Windows.Forms.UseLegacyImages не поддерживается.In .NET Core, the Switch.System.Windows.Forms.UseLegacyImages switch is not supported.

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

3.0, предварительная версия 93.0 Preview 9

Удалите параметр.Remove the switch. Он не поддерживается, и альтернативного варианта нет.The switch is not supported, and no alternative functionality is available.

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs

  • ОтсутствуютNone

Изменение доступа для AccessibleObject.RuntimeIDFirstItemChange of access for AccessibleObject.RuntimeIDFirstItem

Начиная с .NET Core 3.0 RC1 (релиз-кандидат 1) специальные возможности AccessibleObject.RuntimeIDFirstItem изменились с protected на internal.Starting in .NET Core 3.0 RC1, the accessibility of AccessibleObject.RuntimeIDFirstItem has changed from protected to internal.

Описание измененийChange description

Начиная с .NET Core 3.0 (предварительная версия 4) поле AccessibleObject.RuntimeIDFirstItem было protected.Starting with .NET Core 3.0 Preview 4, the AccessibleObject.RuntimeIDFirstItem field was protected. Начиная с версии .NET Core 3.0 RC1 (релиз-кандидат 1) оно изменилось с protected на internal в соответствии со специальными возможностями этого поля в .NET Framework.Starting with .NET Core 3.0 RC1, it has changed from protected to internal to align with the accessibility of the field in the .NET Framework.

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

3.0 RC1 (релиз-кандидат 1)3.0 RC1

Это изменение может повлиять на вас, если вы разработали приложение .NET Core с типом, который является производным от AccessibleObject и обращается к полю RuntimeIDFirstItem.The change can affect you if you've developed a .NET Core app with a type that derives from AccessibleObject and accesses the RuntimeIDFirstItem field. В этом случае локальную константу можно определить следующим образом:If this is the case, you can define a local constant as follows:

const int RuntimeIDFirstItem = 0x2a;

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs

  • Невозможно обнаружить с помощью анализа API.Not detectable via API analysis.

Дублированные API удалены из Windows FormsDuplicated APIs removed from Windows Forms

В .NET Core 3.0 RC1 были удалены некоторые API, которые случайно дублируются в пространстве имен System.Windows.Forms начиная с версии .NET Core 3.0, предварительная версия 4.A number of APIs accidentally duplicated in the System.Windows.Forms namespace starting in .NET Core 3.0 Preview 4 have been removed in .NET Core 3.0 RC1.

Описание измененийChange description

В .NET Core 3.0, предварительная версия 4, случайно дублировались несколько типов в пространстве имен System.Windows.Forms, которые уже существовали в пространстве имен System.ComponentModel.Design..NET Core 3.0 Preview 4 inadvertently duplicated a number of types in the System.Windows.Forms namespace that already existed in the System.ComponentModel.Design namespace. Начиная с .NET Core 3.0 RC1 эти дублирующиеся типы больше не доступны.Starting with .NET Core 3.0 RC1, these duplicated types are no longer available. В следующей таблице приводится список исходного типа и его повторяющегося типа:The following table shows lists the original type and its duplicated type:

Исходный типOriginal type Повторяющийся типDuplicated type
System.ComponentModel.Design.DesignerActionListsChangedEventArgs System.Windows.Forms.DesignerActionListsChangedEventArgs
System.ComponentModel.Design.DesignerActionListsChangedEventHandler System.Windows.Forms.DesignerActionListsChangedEventHandler
System.ComponentModel.Design.DesignerActionListsChangedType System.Windows.Forms.DesignerActionListsChangedType
System.ComponentModel.Design.DesignerActionUIService System.Windows.Forms.DesignerActionUIService
System.ComponentModel.Design.DesignerCommandSet System.Windows.Forms.DesignerCommandSet

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

3.0 RC1 (релиз-кандидат 1)3.0 RC1

Обновите код, чтобы он ссылался на исходный тип, как показано в столбце Исходный тип.Update the code to reference the original type, as shown in the Original type column of the table.

КатегорияCategory

Windows FormsWindows Forms

Затронутые APIAffected APIs

  • Невозможно обнаружить с помощью анализа API.Not detectable via API analysis.

См. такжеSee also