ビルド拡張機能 (主にカスタム タスク) によって BuildEventArgs の任意のサブクラスのカスタム派生ビルド イベントは非推奨になりました。
以前の動作
以前は、 BuildEventArgs のサブクラスから派生し、カスタム タスクやその他のビルド拡張ポイントでこれらの型を自由に使用できました。
新しい動作
.NET 8 以降では、コードで BuildEventArgs から派生した型を使用し、.NET 8 バージョンの MSBuild を使用してビルドした場合、つまりコマンド ラインからビルド エラーが発生します。
カスタム イベント型 'MyCustomBuildEventArgs' のシリアル化中の安全でない BinaryFormatter の使用。 これは間もなく非推奨になります。 代わりに Extended*EventArgs を使用してください。 詳細情報: https://aka.ms/msbuild/eventargs
Visual Studio バージョン 17.10 以降、Visual Studio のビルドにも同じ動作が適用されます。
導入されたバージョン
.NET 8 RC 1
変更の種類
この変更は 動作の変更です。
変更の理由
BinaryFormatter シリアル化は、.NET 8 以降のバージョンでは廃止されています。 BinaryFormatter の使用は不安全とみなされ、実行時に例外が発生します。 MSBuild カスタム派生ビルド イベントは BinaryFormatterを使用するため、ビルドでこれらのイベントを使用するとビルドがクラッシュします。 新しいビルド エラーは、よりグレースフルな失敗を発生させます。
推奨されるアクション
カスタム派生ビルド イベントの代わりに、拡張機能のために新しく導入された次の組み込みイベントのいずれかを使用します。
- ExtendedCustomBuildEventArgs
- ExtendedBuildErrorEventArgs
- ExtendedBuildMessageEventArgs
- ExtendedBuildWarningEventArgs
または、環境変数の MSBUILDCUSTOMBUILDEVENTWARNING
を 1
以外の値に明示的に設定することで、チェックを一時的に無効にすることもできます。
影響を受ける API
.NET