アプリを .NET Framework から .NET Core バージョン 1.0 から 3.1 に移行する場合、この記事に記載されている破壊的変更が影響を受ける可能性があります。 破壊的変更は、導入された .NET Core のバージョンによって、カテゴリ別、およびカテゴリ内でグループ化されます。
注
この記事は、.NET Framework と .NET Core の間の重大な変更の完全な一覧ではありません。 最も重要な重大なシステム変更は、わかり次第ここに追加されます。
コア .NET ライブラリ
- UseShellExecute の既定値の変更
- IDispatchImplAttribute API が削除されました
- FileSystemInfo.Attributes によってスローされる UnauthorizedAccessException
- 破損プロセス状態例外の処理はサポートされていません
- UriBuilder のプロパティでは今後、先頭に文字が付加されない
- Process.StartInfo は、開始しなかったプロセスに対して InvalidOperationException をスローします
.NET 8
IDispatchImplAttribute API が削除されました
.NET Core 2.1
UseShellExecute の既定値の変更
ProcessStartInfo.UseShellExecute の既定値は .NET Core の false
です。 .NET Framework では、既定値は true
。
変更の説明
Process.Start を使用すると、たとえば Paint を起動する Process.Start("mspaint.exe")
などのコードを使用して、アプリケーションを直接起動できます。 また、 ProcessStartInfo.UseShellExecute が true
に設定されている場合は、関連するアプリケーションを間接的に起動することもできます。 .NET Framework では、 ProcessStartInfo.UseShellExecute の既定値は true
です。つまり、 Process.Start("mytextfile.txt")
などのコードは、そのエディターに.txtファイルを関連付けた場合にメモ帳 を 起動します。 .NET Framework でアプリを間接的に起動しないようにするには、 ProcessStartInfo.UseShellExecute を明示的に false
に設定する必要があります。 .NET Core では、 ProcessStartInfo.UseShellExecute の既定値は false
。 つまり、既定では、 Process.Start
を呼び出すときに、関連付けられているアプリケーションは起動されません。
System.Diagnostics.ProcessStartInfoの次のプロパティは、ProcessStartInfo.UseShellExecuteがtrue
されている場合にのみ機能します。
- ProcessStartInfo.CreateNoWindow
- ProcessStartInfo.ErrorDialog
- ProcessStartInfo.Verb
- ProcessStartInfo.WindowStyle。
この変更は、パフォーマンス上の理由から .NET Core で導入されました。 通常、 Process.Start はアプリケーションを直接起動するために使用されます。 アプリを直接起動する場合、Windows シェルを使用する必要はないため、関連するパフォーマンス コストが発生します。 この既定のケースを高速化するために、.NET Core では既定値の ProcessStartInfo.UseShellExecute が false
に変更されます。 必要に応じて、低速パスにオプトインできます。
導入されたバージョン
2.1
注
以前のバージョンの .NET Core では、 UseShellExecute
は Windows 用に実装されていませんでした。
推奨されるアクション
アプリが古い動作に依存している場合は、Process.Start(ProcessStartInfo)をUseShellExecuteでtrue
に設定してProcessStartInfo オブジェクトを呼び出します。
カテゴリ
コア .NET ライブラリ
影響を受ける API
.NET Core 1.0
FileSystemInfo.Attributes によってスローされる UnauthorizedAccessException
.NET Core では、呼び出し元がファイル属性値を設定しようとして、書き込みアクセス許可がない場合、UnauthorizedAccessException がスローされます。
変更の説明
.NET Framework では、呼び出し元が ArgumentException でファイル属性値を設定しようとして、書き込みアクセス許可がない場合、FileSystemInfo.Attributes がスローされます。 .NET Core では、代わりに UnauthorizedAccessException がスローされます (.NET Core では、呼び出し元が無効なファイル属性を設定しようとした場合でも ArgumentException がスローされます)。
導入されたバージョン
1.0
推奨されるアクション
必要に応じて、catch
の代わりにUnauthorizedAccessExceptionをキャッチするように、ArgumentExceptionステートメントを変更します。
カテゴリ
コア .NET ライブラリ
影響を受ける API
破損した状態の例外の処理はサポートされていません
.NET Core での破損プロセス状態例外の処理はサポートされていません。
変更の説明
以前は、C# で try-catch ステートメントを使用するなど、マネージド コードの例外ハンドラーによって、破損したプロセス状態の例外をキャッチして処理できました。
.NET Core 1.0 以降では、破損したプロセス状態の例外はマネージド コードでは処理できません。 共通言語ランタイムは、破損したプロセス状態の例外をマネージド コードに提供しません。
導入されたバージョン
1.0
推奨されるアクション
破損したプロセス状態の例外を処理する必要を避け、それらを引き起こす状況に対処することを検討してください。 破損したプロセス状態の例外を処理する必要がある場合は、C または C++ コードで例外ハンドラーを記述します。
カテゴリ
コア .NET ライブラリ
影響を受ける API
- System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute
- legacyCorruptedStateExceptionsPolicy 要素
UriBuilder プロパティはもはや先頭文字を追加しません
UriBuilder.Fragment は、先頭 #
文字の先頭に付加されなくなり、 UriBuilder.Query が既に存在する場合は先頭 ?
文字の先頭に付加されなくなります。
変更の説明
.NET Framework では、 UriBuilder.Fragment プロパティと UriBuilder.Query プロパティは、常に、格納される値の先頭に #
または ?
文字を付加します。 この動作により、文字列にこれらの先頭文字のいずれかが既に含まれている場合、格納された値に複数の #
または ?
文字が含まれる可能性があります。 たとえば、 UriBuilder.Fragment の値が ##main
になる場合があります。
.NET Core 1.0以降、これらのプロパティは、文字列の先頭に#
または?
文字が既に存在している場合、それらを追加しなくなりました。
導入されたバージョン
1.0
推奨されるアクション
プロパティ値を設定するときに、これらの先頭文字を明示的に削除する必要がなくなりました。 これは、値を追加するときに特に便利です。追加するたびに先頭の #
や ?
を削除する必要がなくなったためです。
たとえば、次のコード スニペットは、.NET Framework と .NET Core の動作の違いを示しています。
var builder = new UriBuilder();
builder.Query = "one=1";
builder.Query += "&two=2";
builder.Query += "&three=3";
builder.Query += "&four=4";
Console.WriteLine(builder.Query);
- .NET Framework では、出力は
????one=1&two=2&three=3&four=4
。 - .NET Core では、出力は
?one=1&two=2&three=3&four=4
。
カテゴリ
コア .NET ライブラリ
影響を受ける API
Process.StartInfo は、開始しなかったプロセスに対して InvalidOperationException をスローします
コードで開始されなかったプロセスの Process.StartInfo プロパティの読み取りによって、InvalidOperationException がスローされます。
変更の説明
.NET Framework で、コードが開始しなかったプロセスの Process.StartInfo プロパティにアクセスすると、ダミーの ProcessStartInfo オブジェクトが返されます。 ダミー オブジェクトには、 EnvironmentVariablesを除くすべてのプロパティの既定値が含まれています。
.NET Core 1.0 以降では、開始されなかった (Process.StartInfo が呼びされなかった) プロセスの Process.Start プロパティを読み取ると、InvalidOperationException がスローされます。
導入されたバージョン
1.0
推奨されるアクション
コードが開始されなかったプロセスの Process.StartInfo プロパティにアクセスしないでください。 たとえば、 Process.GetProcessesによって返されるプロセスについては、このプロパティを読み取らないでください。
カテゴリ
コア .NET ライブラリ
影響を受ける API
暗号
.NET Core 2.1
SignedCms.ComputeSignature のブール値パラメーターが優先されます
.NET Core では、silent
メソッドのブールSignedCms.ComputeSignature(CmsSigner, Boolean) パラメーターが考慮されます。 このパラメーターが true
に設定されている場合、PIN プロンプトは表示されません。
変更の説明
.NET Framework では、silent
メソッドのSignedCms.ComputeSignature(CmsSigner, Boolean) パラメーターは無視され、プロバイダーが必要とする場合は常に PIN プロンプトが表示されます。 .NET Core では、 silent
パラメーターが優先され、 true
に設定されている場合、プロバイダーが必要とする場合でも PIN プロンプトは表示されません。
CMS/PKCS #7 メッセージのサポートは、バージョン 2.1 で .NET Core に導入されました。
導入されたバージョン
2.1
推奨されるアクション
必要に応じて PIN プロンプトが表示されるようにするには、デスクトップ アプリケーションで SignedCms.ComputeSignature(CmsSigner, Boolean) を呼び出し、Boolean パラメーターを false
に設定する必要があります。 結果の動作は、サイレント コンテキストが無効になっているかどうかに関係なく、.NET Framework の場合と同じです。
カテゴリ
暗号
影響を受ける API
MSBuild
.NET Core 3.0
リソース マニフェストのファイル名の変更
.NET Core 3.0 以降では、既定の場合、MSBuild によってリソース ファイルに対して異なるマニフェスト ファイル名が生成されます。
導入されたバージョン
3.0
変更の説明
.NET Core 3.0 より前では、プロジェクト ファイルの LogicalName
項目に ManifestResourceName
、DependentUpon
、または EmbeddedResource
メタデータが指定されなかった場合、MSBuild ではパターン <RootNamespace>.<ResourceFilePathFromProjectRoot>.resources
でマニフェスト ファイル名が生成されていました。
RootNamespace
がプロジェクト ファイルで定義されていない場合は、既定でそのプロジェクトの名前になります。 たとえば、ルート プロジェクト ディレクトリ内の Form1 という名前のリソース ファイルに対して生成されたマニフェスト名は、MyProject.Form1.resources でした。
.NET Core 3.0 以降では、あるリソース ファイルが同じ名前のソース ファイルと併置されている場合 (たとえば、Form1.resx と Form1.cs)、MSBuild ではそのソース ファイルの型情報が使用されてパターン <Namespace>.<ClassName>.resources
でマニフェスト ファイル名が生成されます。 名前空間とクラス名は、併置されたソース ファイルの最初の型から抽出されます。 たとえば、Form1.cs という名前のソース ファイルと併置されている Form1 という名前のリソース ファイルに対して生成されたマニフェスト名は、MyNamespace.Form1.resources になります。 重要な注意点として、.NET Core の以前のバージョンとはファイル名の最初の部分が異なります (MyProject ではなく MyNamespace)。
注
プロジェクト ファイルの LogicalName
項目で ManifestResourceName
、DependentUpon
、または EmbeddedResource
メタデータが指定されている場合、この変更はそのリソース ファイルには影響しません。
この破壊的変更は、.NET Core プロジェクトへの EmbeddedResourceUseDependentUponConvention
プロパティの追加によって導入されました。 既定では、リソース ファイルは .NET Core プロジェクト ファイルに明示的にリストされていないため、生成された DependentUpon
ファイルに名前を付ける方法を指定するための メタデータはありません。
EmbeddedResourceUseDependentUponConvention
が true
に設定されている場合 (既定)、MSBuild では併置されたソース ファイルが検索され、そのファイルから名前空間とクラス名が抽出されます。
EmbeddedResourceUseDependentUponConvention
を false
に設定すると、MSBuild では RootNamespace
と相対ファイル パスを組み合わせた前の動作に従ってマニフェスト名が生成されます。
推奨されるアクション
ほとんどの場合、開発者側でアクションを取る必要はなく、アプリは引き続き動作するはずです。 ただし、この変更によってアプリに影響が出ている場合は、次のいずれかを実行してください。
新しいマニフェスト名を要求するようにコードを変更する。
プロジェクト ファイルで
EmbeddedResourceUseDependentUponConvention
をfalse
に設定して、新しい名前付け規則を無効にする。<PropertyGroup> <EmbeddedResourceUseDependentUponConvention>false</EmbeddedResourceUseDependentUponConvention> </PropertyGroup>
カテゴリ
MSBuild
影響を受ける API
なし
ネットワーキング
.NET Core 2.0
WebClient.CancelAsync が常にすぐに取り消されるわけではありません
.NET Core 2.0 以降では、応答がフェッチを開始した場合、 WebClient.CancelAsync() を呼び出しても要求はすぐには取り消されません。
変更の説明
以前は、 WebClient.CancelAsync() 呼び出しはすぐに要求を取り消しました。 .NET Core 2.0 以降では、 WebClient.CancelAsync() を呼び出すと、応答がフェッチを開始していない場合にのみ、要求が直ちに取り消されます。 応答がフェッチを開始した場合、要求は完全な応答が読み取られた後にのみ取り消されます。
この変更は、WebClientを優先して HttpClient API が非推奨になるため実装されました。
導入されたバージョン
2.0
推奨されるアクション
System.Net.Http.HttpClientの代わりに System.Net.WebClient クラスを使用します。これは非推奨です。
カテゴリ
ネットワーキング
影響を受ける API
Windows フォーム
Windows フォームのサポートは、バージョン 3.0 の .NET Core に追加されました。 Windows フォーム アプリを .NET Framework から .NET Core に移行する場合、ここに記載されている破壊的変更がアプリに影響する可能性があります。
- 削除されたコントロール
- ツールチップが表示されている場合、CellFormatting イベントは発生しません
- Control.DefaultFont が Segoe UI 9 pt に変更されました
- FolderBrowserDialog の最新化
- SerializableAttribute が一部の Windows フォームの種類から削除されました
- AllowUpdateChildControlIndexForTabControls の互換性スイッチはサポートされていません
- DomainUpDown.UseLegacyScrolling 互換性スイッチはサポートされていません
- DoNotLoadLatestRichEditControl 互換性スイッチがサポートされていません
- DoNotSupportSelectAllShortcutInMultilineTextBox 互換性スイッチがサポートされていません
- DontSupportReentrantFilterMessage 互換性スイッチがサポートされていません
- EnableVisualStyleValidation 互換性スイッチはサポートされていません
- UseLegacyContextMenuStripSourceControlValue 互換性スイッチはサポートされていません
- UseLegacyImages 互換性スイッチはサポートされていません
- Visual Basic の About テンプレートと SplashScreen テンプレートが壊れている
- Microsoft.VisualBasic.ApplicationServices 名前空間の型は使用できません
- Microsoft.VisualBasic.Devices 名前空間の型は使用できません
- Microsoft.VisualBasic.MyServices 名前空間の型は使用できません
.NET Core 3.1
削除されたコントロール
.NET Core 3.1 以降では、一部の Windows フォーム コントロールは使用できなくなりました。
変更の説明
.NET Core 3.1 以降では、さまざまな Windows フォーム コントロールは使用できなくなりました。 .NET Framework 2.0 では、より優れた設計とサポートを備える代替コントロールが導入されました。 非推奨のコントロールは、以前はデザイナー ツールボックスから削除されていましたが、引き続き使用できます。
次の種類は使用できなくなりました。
- ContextMenu
- DataGrid
- DataGrid.HitTestType
- DataGrid.HitTestInfo
- DataGridBoolColumn
- DataGridCell
- DataGridColumnStyle
- DataGridColumnStyle.DataGridColumnHeaderAccessibleObject
- DataGridColumnStyle.CompModSwitches
- DataGridLineStyle
- DataGridParentRowsLabelStyle
- DataGridPreferredColumnWidthTypeConverter
- DataGridTableStyle
- DataGridTextBox
- DataGridTextBoxColumn
- GridColumnStylesCollection
- GridTablesFactory
- GridTableStylesCollection
- IDataGridEditingService
- IMenuEditorService
- MainMenu
- Menu
- Menu.MenuItemCollection
- MenuItem
- ToolBar
- ToolBarAppearance
- ToolBarButton
- ToolBar.ToolBarButtonCollection
- ToolBarButtonClickEventArgs
- ToolBarButtonStyle
- ToolBarTextAlign
導入されたバージョン
3.1
推奨されるアクション
削除された各コントロールには、推奨される置換コントロールがあります。 次の表を参照してください。
削除されたコントロール (API) | 推奨される置換 | 削除される関連 API |
---|---|---|
コンテキストメニュー | ContextMenuStrip | |
DataGrid | DataGridView(データグリッドビュー) | DataGridCell、DataGridRow、DataGridTableCollection、DataGridColumnCollection、DataGridTableStyle、DataGridColumnStyle、DataGridLineStyle、DataGridParentRowsLabel、DataGridParentRowsLabelStyle、DataGridBoolColumn、DataGridTextBox、GridColumnStylesCollection、GridTableStylesCollection、HitTestType |
MainMenu | MenuStrip | |
メニュー | ToolStripDropDown、ToolStripDropDownMenu | メニューアイテムコレクション |
メニュー項目 | ToolStripMenuItem | |
ツールバー | ツールストリップ | ツールバーの外観 |
ツールバーボタン | ツールストリップボタン | ToolBarButtonClickEventArgs、ToolBarButtonClickEventHandler、ToolBarButtonStyle、ToolBarTextAlign |
カテゴリ
Windows フォーム
影響を受ける API
- System.Windows.Forms.ContextMenu
- System.Windows.Forms.GridColumnStylesCollection
- System.Windows.Forms.GridTablesFactory
- System.Windows.Forms.GridTableStylesCollection
- System.Windows.Forms.IDataGridEditingService
- System.Windows.Forms.MainMenu
- System.Windows.Forms.Menu
- System.Windows.Forms.Menu.MenuItemCollection
- System.Windows.Forms.MenuItem
- System.Windows.Forms.ToolBar
- System.Windows.Forms.ToolBar.ToolBarButtonCollection
- System.Windows.Forms.ToolBarAppearance
- System.Windows.Forms.ToolBarButton
- System.Windows.Forms.ToolBarButtonClickEventArgs
- System.Windows.Forms.ToolBarButtonStyle
- System.Windows.Forms.ToolBarTextAlign
- System.Windows.Forms.DataGrid
- System.Windows.Forms.DataGrid.HitTestType
- System.Windows.Forms.DataGridBoolColumn
- System.Windows.Forms.DataGridCell
- System.Windows.Forms.DataGridColumnStyle
- System.Windows.Forms.DataGridLineStyle
- System.Windows.Forms.DataGridParentRowsLabelStyle
- System.Windows.Forms.DataGridPreferredColumnWidthTypeConverter
- System.Windows.Forms.DataGridTableStyle
- System.Windows.Forms.DataGridTextBox
- System.Windows.Forms.DataGridTextBoxColumn
- System.Windows.Forms.Design.IMenuEditorService
ツールチップが表示されている場合、CellFormatting イベントが発生しない
マウスでポイントしたときと、キーボードで選択したときに、DataGridView にセルのテキストとエラーのヒントが表示されるようになりました。 ツールヒントが表示されている場合、 DataGridView.CellFormatting イベントは発生しません。
変更の説明
.NET Core 3.1 より前のバージョンでは、DataGridView プロパティが ShowCellToolTips に設定されたtrue
は、セルのテキストとエラーに関して、マウスでセルをホバーしたときにツールチップが表示されていました。 キーボードを使用してセルを選択したときにヒントが表示されませんでした (たとえば、Tab キー、ショートカット キー、矢印ナビゲーションを使用)。 ユーザーがセルを編集し、 DataGridView がまだ編集モードの間に、 ToolTipText プロパティが設定されていないセルの上にマウス ポインターを置いた場合、セルに表示するセルのテキストを書式設定するために CellFormatting イベントが発生しました。
アクセシビリティ標準を満たすために、.NET Core 3.1 以降では、DataGridView プロパティが ShowCellToolTips に設定されたtrue
には、セルのテキストのヒントと、セルがホバーされたときだけでなく、キーボードで選択されたときのエラーも表示されます。 この変更の結果、CellFormatting が編集モードのときに、 プロパティが設定されていないセルにマウスポインターを合わせても、ToolTipText イベントは発生DataGridView。 ホバーされたセルの内容がセルではなくツールチップとして表示されるため、イベントはトリガーされません。
導入されたバージョン
3.1
推奨されるアクション
CellFormattingが編集モードの間、DataGridView イベントに依存するすべてのコードをリファクタリングします。
カテゴリ
Windows フォーム
影響を受ける API
無し
.NET Core 3.0
既定のコントロール フォントが Segoe UI 9 pt に変更されました
変更の説明
.NET Framework では、 Control.DefaultFont プロパティは Microsoft Sans Serif 8.25 pt
に設定されました。 次の図は、既定のフォントを使用するウィンドウを示しています。
.NET Core 3.0 以降では、既定のフォントは Segoe UI 9 pt
( SystemFonts.MessageBoxFont と同じフォント) に設定されています。 この変更の結果、フォームとコントロールのサイズは、新しい既定のフォントのサイズを考慮して約 27% 大きくなります。 例えば次が挙げられます。
この変更は、 Windows ユーザー エクスペリエンス (UX) のガイドラインに合わせて行われました。
導入されたバージョン
3.0
推奨されるアクション
フォームとコントロールのサイズが変更されたため、アプリケーションが正しくレンダリングされるようにします。
1 つのフォームの元のフォントを保持するには、既定のフォントを Microsoft Sans Serif 8.25 pt
に設定します。 例えば次が挙げられます。
public MyForm()
{
InitializeComponent();
Font = new Font(new FontFamily("Microsoft Sans Serif"), 8.25f);
}
または、次のいずれかの方法で、アプリケーション全体の既定のフォントを変更できます。
ApplicationDefaultFont
MSBuild プロパティを "Microsoft Sans Serif, 8.25pt" に設定します。 これは、Visual Studio でデザイナーで新しい設定を使用できるため、推奨される手法です。<PropertyGroup> <ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont> </PropertyGroup>
Application.SetDefaultFont(Font)を呼び出すことによって。
class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.SetHighDpiMode(HighDpiMode.SystemAware); Application.SetDefaultFont(new Font(new FontFamily("Microsoft Sans Serif"), 8.25f)); Application.Run(new Form1()); } }
カテゴリ
- Windows フォーム
影響を受ける API
なし。
FolderBrowserDialog の最新化
FolderBrowserDialog コントロールは、.NET Core 用の Windows フォーム アプリケーションで変更されました。
変更の説明
.NET Framework の Windows フォームでは、 FolderBrowserDialog コントロールに対して次のダイアログが使用されます。
.NET Core 3.0 では、Windows フォームは Windows Vista で導入された新しい COM ベースのコントロールを使用します。
導入されたバージョン
3.0
推奨されるアクション
ダイアログは自動的にアップグレードされます。
元のダイアログを保持する場合は、次のコード フラグメントに示すように、ダイアログを表示する前に、 FolderBrowserDialog.AutoUpgradeEnabled プロパティを false
に設定します。
var dialog = new FolderBrowserDialog();
dialog.AutoUpgradeEnabled = false;
dialog.ShowDialog();
カテゴリ
Windows フォーム
影響を受ける API
SerializableAttribute が一部の Windows フォームの種類から削除されました
SerializableAttributeは、既知のバイナリ シリアル化シナリオがない一部の Windows フォーム クラスから削除されました。
変更の説明
次の型は、.NET Framework の SerializableAttribute で修飾されていますが、.NET Core では属性が削除されています。
System.InvariantComparer
- System.ComponentModel.Design.ExceptionCollection
- System.ComponentModel.Design.Serialization.CodeDomSerializerException
System.ComponentModel.Design.Serialization.CodeDomComponentSerializationService.CodeDomSerializationStore
- System.Drawing.Design.ToolboxItem
System.Resources.ResXNullRef
System.Resources.ResXDataNode
System.Resources.ResXFileRef
- System.Windows.Forms.Cursor
System.Windows.Forms.NativeMethods.MSOCRINFOSTRUCT
System.Windows.Forms.NativeMethods.MSG
これまで、このシリアル化メカニズムには重大なメンテナンスとセキュリティの問題がありました。 型に SerializableAttribute
を維持することは、バージョン間のシリアル化の変更とフレームワーク間のシリアル化の変更について、これらの型をテストする必要があります。 これにより、これらの型を進化させるのが難しくなり、メンテナンスにかかるコストが高くなる可能性があります。 これらの型には、属性の削除による影響を最小限に抑える既知のバイナリ シリアル化シナリオはありません。
詳細については、「 バイナリシリアル化」を参照してください。
導入されたバージョン
3.0
推奨されるアクション
シリアル化可能としてマークされているこれらの型に依存する可能性があるコードを更新します。
カテゴリ
Windows フォーム
影響を受ける API
- 無し
AllowUpdateChildControlIndexForTabControls 互換性スイッチはサポートされていません
Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls
互換性スイッチは、.NET Framework 4.6 以降のバージョンの Windows フォームではサポートされていますが、.NET Core または .NET 5.0 以降ではサポートされていません。
変更の説明
.NET Framework 4.6 以降のバージョンでは、タブを選択するとコントロール コレクションの順序が変更されます。
Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls
互換性スイッチを使用すると、この動作が望ましくない場合に、アプリケーションでこの並べ替えをスキップできます。
.NET Core および .NET 5.0 以降では、 Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls
スイッチはサポートされていません。
導入されたバージョン
3.0
推奨されるアクション
スイッチを取り外します。 スイッチはサポートされておらず、代替機能は使用できません。
カテゴリ
Windows フォーム
影響を受ける API
- 無し
DomainUpDown.UseLegacyScrolling 互換性スイッチはサポートされていません
.NET Framework 4.7.1 で導入された Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling
互換性スイッチは、.NET Core または .NET 5.0 以降の Windows フォームではサポートされていません。
変更の説明
.NET Framework 4.7.1 以降、 Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling
互換性スイッチを使用すると、開発者は独立した DomainUpDown.DownButton() および DomainUpDown.UpButton() アクションをオプトアウトできます。 スイッチは従来の動作を復元しました。コンテキスト テキストが存在する場合、DomainUpDown.UpButton()は無視され、開発者は DomainUpDown.DownButton() アクションの前にコントロールDomainUpDown.UpButton()アクションを使用する必要があります。 詳細については、「 <AppContextSwitchOverrides> 要素」を参照してください。
.NET Core および .NET 5.0 以降では、 Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling
スイッチはサポートされていません。
導入されたバージョン
3.0
推奨されるアクション
スイッチを取り外します。 スイッチはサポートされておらず、代替機能は使用できません。
カテゴリ
Windows フォーム
影響を受ける API
DoNotLoadLatestRichEditControl 互換性スイッチがサポートされていません
.NET Framework 4.7.1 で導入された Switch.System.Windows.Forms.UseLegacyImages
互換性スイッチは、.NET Core または .NET 5.0 以降の Windows フォームではサポートされていません。
変更の説明
.NET Framework 4.6.2 以前のバージョンでは、 RichTextBox コントロールは Win32 RichEdit コントロール v3.0 をインスタンス化し、.NET Framework 4.7.1 をターゲットとするアプリケーションの場合、 RichTextBox コントロールは RichEdit v4.1 をインスタンス化します ( msftedit.dll)。
Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl
互換性スイッチが導入され、.NET Framework 4.7.1 以降のバージョンを対象とするアプリケーションが新しい RichEdit v4.1 コントロールをオプトアウトし、代わりに古い RichEdit v3 コントロールを使用できるようになりました。
.NET Core および .NET 5.0 以降のバージョンでは、 Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl
スイッチはサポートされていません。
RichTextBox コントロールの新しいバージョンのみがサポートされます。
導入されたバージョン
3.0
推奨されるアクション
スイッチを取り外します。 スイッチはサポートされておらず、代替機能は使用できません。
カテゴリ
Windows フォーム
影響を受ける API
DoNotSupportSelectAllShortcutInMultilineTextBox 互換性スイッチはサポートされていません
.NET Framework 4.6.1 で導入された Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox
互換性スイッチは、.NET Core および .NET 5.0 以降の Windows フォームではサポートされていません。
変更の説明
.NET Framework 4.6.1 以降、 コントロールで + TextBox ショートカット キーを選択すると、すべてのテキストが選択されました。 .NET Framework 4.6 以前のバージョンでは、 + プロパティと プロパティの両方がに設定されている場合、TextBox.Multilinetrue
A ショートカット キーを選択すると、すべてのテキストを選択できませんでした。
Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox
互換性スイッチは、元の動作を保持するために .NET Framework 4.6.1 で導入されました。 詳細については、TextBox.ProcessCmdKeyを参照してください。
.NET Core および .NET 5.0 以降のバージョンでは、 Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox
スイッチはサポートされていません。
導入されたバージョン
3.0
推奨されるアクション
スイッチを取り外します。 スイッチはサポートされておらず、代替機能は使用できません。
カテゴリ
Windows フォーム
影響を受ける API
- 無し
DontSupportReentrantFilterMessage 互換性スイッチがサポートされていません
.NET Framework 4.6.1 で導入された Switch.System.Windows.Forms.DontSupportReentrantFilterMessage
互換性スイッチは、.NET Core および .NET 5.0 以降の Windows フォームではサポートされていません。
変更の説明
.NET Framework 4.6.1 以降では、Switch.System.Windows.Forms.DontSupportReentrantFilterMessage
互換性スイッチは、IndexOutOfRangeException メッセージがカスタム Application.FilterMessage実装で呼び出されたときに発生する可能性のあるIMessageFilter.PreFilterMessage例外に対処します。 詳細については、「 軽減策: カスタム IMessageFilter.PreFilterMessage の実装」を参照してください。
.NET Core および .NET 5.0 以降では、 Switch.System.Windows.Forms.DontSupportReentrantFilterMessage
スイッチはサポートされていません。
導入されたバージョン
3.0
推奨されるアクション
スイッチを取り外します。 スイッチはサポートされておらず、代替機能は使用できません。
カテゴリ
Windows フォーム
影響を受ける API
EnableVisualStyleValidation 互換性スイッチはサポートされていません
Switch.System.Windows.Forms.EnableVisualStyleValidation
互換性スイッチは、.NET Core または .NET 5.0 以降の Windows フォームではサポートされていません。
変更の説明
.NET Framework では、 Switch.System.Windows.Forms.EnableVisualStyleValidation
互換性スイッチを使用すると、アプリケーションは数値形式で指定されたビジュアル スタイルの検証をオプトアウトできます。
.NET Core および .NET 5.0 以降では、 Switch.System.Windows.Forms.EnableVisualStyleValidation
スイッチはサポートされていません。
導入されたバージョン
3.0
推奨されるアクション
スイッチを取り外します。 スイッチはサポートされておらず、代替機能は使用できません。
カテゴリ
Windows フォーム
影響を受ける API
- 無し
UseLegacyContextMenuStripSourceControlValue 互換性スイッチはサポートされていません
.NET Framework 4.7.2 で導入された Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue
互換性スイッチは、.NET Core または .NET 5.0 以降の Windows フォームではサポートされていません。
変更の説明
.NET Framework 4.7.2 以降では、 Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue
互換性スイッチを使用すると、開発者は ContextMenuStrip.SourceControl プロパティの新しい動作をオプトアウトできます。これにより、ソース管理への参照が返されるようになりました。 プロパティの以前の動作は、 null
を返すものでした。 詳細については、「 <AppContextSwitchOverrides> 要素」を参照してください。
.NET Core および .NET 5.0 以降では、 Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue
スイッチはサポートされていません。
導入されたバージョン
3.0
推奨されるアクション
スイッチを取り外します。 スイッチはサポートされておらず、代替機能は使用できません。
カテゴリ
Windows フォーム
影響を受ける API
UseLegacyImages 互換性スイッチはサポートされていません
.NET Framework 4.8 で導入された Switch.System.Windows.Forms.UseLegacyImages
互換性スイッチは、.NET Core または .NET 5.0 以降の Windows フォームではサポートされていません。
変更の説明
.NET Framework 4.8 以降、 Switch.System.Windows.Forms.UseLegacyImages
互換性スイッチは、高 DPI 環境での ClickOnce シナリオで発生する可能性のある画像スケーリングの問題に対処しました。
true
に設定すると、このスイッチを使用すると、スケールが 100%を超えるスケールに設定されている高 DPI ディスプレイで従来のイメージ スケーリングを復元できます。 詳細については、GitHub の .NET Framework 4.8 リリース ノート を参照してください。
.NET Core および .NET 5.0 以降では、 Switch.System.Windows.Forms.UseLegacyImages
スイッチはサポートされていません。
導入されたバージョン
3.0
推奨されるアクション
スイッチを取り外します。 スイッチはサポートされておらず、代替機能は使用できません。
カテゴリ
Windows フォーム
影響を受ける API
- 無し
「アバウトテンプレートとスプラッシュスクリーンテンプレートが壊れている」
Visual Studio によって生成された About.vb
ファイルと SplashScreen.vb
ファイルには、.NET Core 3.0 および 3.1 では使用できない My
名前空間内の型への参照が含まれています。
導入されたバージョン
3.0
変更の説明
.NET Core 3.0 および 3.1 には、Visual Basic My
の完全なサポートは含まれません。 Visual Studio for Visual Basic Windows フォーム アプリの About フォーム テンプレートと SplashScreen フォーム テンプレートは、使用できない My.Application.Info
型のプロパティを参照します。
推奨されるアクション
Visual Basic My
のサポートが .NET 5 で改善され、プロジェクトが .NET 5 以降にアップグレードされました。
-又は-
アプリの About 型と SplashScreen 型のコンパイラ エラーを修正します。
System.Reflection.Assembly
クラスを使用して、My.Application.Info
型によって提供される情報を取得します。 両方の形態のストレートポートはここで利用可能です。
ヒント
これはサンプル コードであり、最適化されません。 フォームの読み込み時間を短縮するために、属性の一覧をキャッシュする必要があります。
概要
Imports System.Reflection
Public NotInheritable Class About
Private Sub about_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Set the title of the form.
Dim applicationTitle As String = Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyTitleAttribute)()?.Title
If String.IsNullOrEmpty(applicationTitle) Then
applicationTitle = System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().GetName().Name)
End If
Me.Text = String.Format("About {0}", applicationTitle)
' Initialize all of the text displayed on the About Box.
' TODO: Customize the application's assembly information in the "Application" pane of the project
' properties dialog (under the "Project" menu).
Me.LabelProductName.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyProductAttribute)()?.Product, "")
Me.LabelVersion.Text = String.Format("Version {0}", Assembly.GetExecutingAssembly().GetName().Version)
Me.LabelCopyright.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyCopyrightAttribute)()?.Copyright, "")
Me.LabelCompanyName.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyCompanyAttribute)()?.Company, "")
Me.TextBoxDescription.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyDescriptionAttribute)()?.Description, "")
End Sub
Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click
Me.Close()
End Sub
End Class
SplashScreen
Imports System.Reflection
Public NotInheritable Class SplashScreen
Private Sub SplashScreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Set up the dialog text at runtime according to the application's assembly information.
'TODO: Customize the application's assembly information in the "Application" pane of the project
' properties dialog (under the "Project" menu).
'Application title
Dim appTitle As String = Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyTitleAttribute)()?.Title
If String.IsNullOrEmpty(appTitle) Then
appTitle = System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().GetName().Name)
End If
ApplicationTitle.Text = appTitle
Dim versionValue = Assembly.GetExecutingAssembly().GetName().Version
'Format the version information using the text set into the Version control at design time as the
' formatting string. This allows for effective localization if desired.
' Build and revision information could be included by using the following code and changing the
' Version control's designtime text to "Version {0}.{1:00}.{2}.{3}" or something similar. See
' String.Format() in Help for more information.
'
' Version.Text = System.String.Format(Version.Text, versionValue.Major, versionValue.Minor, versionValue.Build, versionValue.Revision)
Version.Text = System.String.Format(Version.Text, versionValue.Major, versionValue.Minor)
'Copyright info
Copyright.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyCopyrightAttribute)()?.Copyright, "")
End Sub
End Class
カテゴリ
Visual Basic Windows フォーム
影響を受ける API
無し
Microsoft.VisualBasic.ApplicationServices 名前空間の型は使用できません
Microsoft.VisualBasic.ApplicationServices名前空間の型は使用できません。
導入されたバージョン
.NET Core 3.0
変更の説明
Microsoft.VisualBasic.ApplicationServices名前空間の型は、.NET Framework で使用できました。 .NET Core 3.0 - 3.1 では使用できません。
不要なアセンブリ依存関係や後続のリリースでの破壊的変更を回避するために、型が削除されました。
推奨されるアクション
この名前空間は .NET 5 で追加されました。プロジェクトを .NET 5 以降にアップグレードします。
-又は-
コードが Microsoft.VisualBasic.ApplicationServices 型とそのメンバーの使用に依存している場合は、.NET クラス ライブラリで対応する型またはメンバーを使用できる場合があります。 たとえば、一部の System.Environment メンバーと System.Security.Principal.WindowsIdentity メンバーは、 Microsoft.VisualBasic.ApplicationServices.User クラスのプロパティと同等の機能を提供します。
カテゴリ
Visual Basic
影響を受ける API
Microsoft.VisualBasic.Devices 名前空間の型は使用できません
Microsoft.VisualBasic.Devices名前空間の型は使用できません。
導入されたバージョン
.NET Core 3.0
変更の説明
Microsoft.VisualBasic.Devices名前空間の型は、.NET Framework で使用できました。 .NET Core 3.0 - 3.1 では使用できません。
不要なアセンブリ依存関係や後続のリリースでの破壊的変更を回避するために、型が削除されました。
推奨されるアクション
この名前空間は .NET 5 で追加されました。プロジェクトを .NET 5 以降にアップグレードします。
-又は-
コードが Microsoft.VisualBasic.Devices 型とそのメンバーの使用に依存している場合は、.NET クラス ライブラリで対応する型またはメンバーを使用できる場合があります。 たとえば、 Microsoft.VisualBasic.Devices.Clock クラスと同等の機能は System.DateTime 型と System.Environment 型によって提供され、 Microsoft.VisualBasic.Devices.Ports クラスと同等の機能は System.IO.Ports 名前空間の型によって提供されます。
カテゴリ
Visual Basic
影響を受ける API
Microsoft.VisualBasic.MyServices 名前空間の型は使用できません
Microsoft.VisualBasic.MyServices名前空間の型は使用できません。
導入されたバージョン
.NET Core 3.0
変更の説明
Microsoft.VisualBasic.MyServices名前空間の型は、.NET Framework で使用できました。 .NET Core 3.0 - 3.1 では使用できません。
不要なアセンブリ依存関係や後続のリリースでの破壊的変更を回避するために、型が削除されました。
推奨されるアクション
この名前空間は .NET 5 で追加されました。プロジェクトを .NET 5 以降にアップグレードします。
-又は-
コードが Microsoft.VisualBasic.MyServices 型とそのメンバーの使用に依存している場合、.NET クラス ライブラリには対応する型とメンバーがあります。 Microsoft.VisualBasic.MyServices 型と同等の .NET クラス ライブラリ型のマッピングを次に示します。
Microsoft.VisualBasic.MyServices の型 | .NET クラス ライブラリの種類 |
---|---|
ClipboardProxy | System.Windows.ClipboardWPF アプリケーションの場合、System.Windows.Forms.ClipboardWindows フォーム アプリケーションの場合 |
FileSystemProxy | System.IO名前空間の型 |
RegistryProxy | Microsoft.Win32名前空間のレジストリ関連の型 |
SpecialDirectoriesProxy | Environment.GetFolderPath |
カテゴリ
Visual Basic
影響を受ける API
こちらも参照ください
.NET