Compartilhar via


Eventos de compilação personalizados derivados do MSBuild estão obsoletos.

Os eventos de build derivados personalizados de qualquer subclasse de BuildEventArgs por qualquer extensibilidade de build (principalmente tarefas personalizadas) foram preteridos.

Comportamento anterior

Anteriormente, você podia derivar de qualquer subclasse de BuildEventArgs e usar esses tipos livremente em tarefas personalizadas e outros pontos de extensibilidade de compilação.

Novo comportamento

A partir do .NET 8, um erro de build será emitido se o código usar qualquer tipo derivado de BuildEventArgs e você for construí-lo usando a versão .NET 8 do MSBuild, ou seja, a partir da linha de comando:

Uso de BinaryFormatter não seguro durante a serialização do tipo de evento personalizado 'MyCustomBuildEventArgs'. Isso será preterido em breve. Em vez disso, use Extended*EventArgs. Mais informações: https://aka.ms/msbuild/eventargs.

No .NET 10, a mensagem de erro foi alterada para:

Não há suporte para o tipo de evento personalizado 'MyCustomBuildEventArgs', pois todos os tipos de eventos personalizados foram preteridos. Em vez disso, use Extended*EventArgs. Mais informações: https://aka.ms/msbuild/eventargs.

A partir do Visual Studio versão 17.10, o mesmo comportamento se aplica a builds no Visual Studio.

Versão introduzida

.NET 8 RC 1

Tipo de alteração

Esta é uma alteração comportamental.

Motivo da alteração

BinaryFormatter A serialização é obsoleta no .NET 8 e versões posteriores. O uso de BinaryFormatter é considerado inseguro e gera uma exceção no tempo de execução. Como os eventos de build derivados personalizados do MSBuild usam BinaryFormatter, o build falhará se você tiver usado esses eventos em seu build. O novo erro de compilação proporciona uma falha mais graciosa.

Use um dos seguintes eventos internos recém-introduzidos para extensibilidade em vez do evento de build derivado personalizado:

Como alternativa, você pode desabilitar temporariamente a verificação definindo explicitamente a variável de ambiente MSBUILDCUSTOMBUILDEVENTWARNING como algo diferente de 1.

APIs afetadas