Os eventos de build derivados personalizados do MSBuild foram preteridos

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ê poderia derivar de qualquer subclasse de BuildEventArgs e utilizar esses tipos livremente em tarefas personalizadas e em outros pontos de extensibilidade de construção.

Novo comportamento

A partir do .NET 8, um erro de compilação será emitido se seu código utilizar qualquer tipo derivado de BuildEventArgs e você compilar 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, utilize Extended*EventArgs. Mais informações: https://aka.ms/msbuild/eventargs

Se você compilar a partir do Visual Studio, não haverá nenhuma alteração no comportamento, a menos que você opte por definir a variável de ambiente MSBUILDCUSTOMBUILDEVENTWARNING como 1 (disponível no Visual Studio versão 17.8 e posteriores).

Versão introduzida

.NET 8 RC 1

Tipo de alteração

Esta é uma alteração comportamental.

Motivo da alteração

A serialização BinaryFormatter está obsoleta no .NET 8 e em versões posteriores. Qualquer uso de BinaryFormatter gera uma exceção em tempo de execução. Como os eventos de build derivados personalizados do MSBuild usam BinaryFormatter, sua compilação terá um erro fatal se você utilizar esses eventos em sua compilação. O novo erro de compilação proporciona uma falha mais graciosa.

Use um dos eventos internos recém-introduzidos a seguir para obter extensibilidade em vez de seu evento de compilação 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