Compartir a través de


Eventos de compilación derivados personalizados de MSBuild en desuso

Se han dejado de usar los eventos de compilación personalizados derivados de cualquier subclase de BuildEventArgs mediante cualquier extensión de compilación (principalmente tareas personalizadas).

Comportamiento anterior

Anteriormente, podías derivar de cualquier subclase de BuildEventArgs y usar esos tipos libremente en tareas personalizadas y otros puntos de extensibilidad de construcción.

Nuevo comportamiento

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á en desuso pronto. Por favor, use Extended*EventArgs en su lugar. Más información: https://aka.ms/msbuild/eventargs.

En .NET 10, el mensaje de error se cambió a:

El tipo de evento personalizado "MyCustomBuildEventArgs" no se admite porque todos los tipos de eventos personalizados han quedado en desuso. Por favor, use Extended*EventArgs en su lugar. Más información: https://aka.ms/msbuild/eventargs.

A partir de la versión 17.10 de Visual Studio, el mismo comportamiento se aplica a las compilaciones en Visual Studio.

Versión introducida

.NET 8 RC 1

Tipo de cambio

Este es un cambio de comportamiento.

Motivo del cambio

BinaryFormatter La serialización está obsoleta en .NET 8 y versiones posteriores. Cualquier uso de BinaryFormatter se considera inseguro y lanza 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 usaba 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 recién 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 MSBUILDCUSTOMBUILDEVENTWARNING de entorno en algo distinto de 1.

Las APIs afectadas