Eventos de compilación derivados personalizados de MSBuild en desuso

Los eventos de compilación derivados personalizados de cualquier subclase de BuildEventArgs por cualquier extensibilidad de compilación (sobre todo, tareas personalizadas) han quedado en desuso.

Comportamiento anterior

Anteriormente, podría derivar de cualquier subclase de BuildEventArgs y usar esos tipos libremente en tareas personalizadas y otros puntos de extensibilidad de compilación.

Comportamiento nuevo

A partir de .NET 8, se emite un error de compilación si el código usa cualquier tipo derivado de BuildEventArgs y se compila con la versión de .NET 8 de MSBuild, es decir, desde la línea de comandos:

Uso de BinaryFormatter no seguro durante la serialización del tipo de evento personalizado "MyCustomBuildEventArgs". Esto quedará pronto en desuso. Use Extended*EventArgs en su lugar. Más información: https://aka.ms/msbuild/eventargs

Si compila desde Visual Studio, no hay ningún cambio en el comportamiento a menos que opte por establecer la variable de entorno MSBUILDCUSTOMBUILDEVENTWARNING en 1 (disponible en la versión 17.8 y posteriores de Visual Studio).

Versión introducida

.NET 8 RC 1

Tipo de cambio

Este es un cambio de comportamiento.

Motivo del cambio

La serialización BinaryFormatter está obsoleta en .NET 8 y versiones posteriores. Cualquier uso de BinaryFormatter produce una excepción en tiempo de ejecución. Dado que los eventos de compilación derivados personalizados de MSBuild usan BinaryFormatter, la compilación se bloquearía si usa estos eventos en la compilación. El nuevo error de compilación proporciona un error más estable.

Use uno de los siguientes eventos integrados recientemente introducidos para la extensibilidad en lugar del evento de compilación derivado personalizado:

Como alternativa, puede deshabilitar temporalmente la comprobación estableciendo explícitamente la variable de entorno MSBUILDCUSTOMBUILDEVENTWARNING en un valor distinto de 1.

API afectadas