Share via


Eventos de compilação derivados personalizados do MSBuild preteridos

Eventos de compilação derivados personalizados de qualquer subclasse de por qualquer extensibilidade de BuildEventArgs compilação (principalmente tarefas personalizadas) foram preteridos.

Comportamento anterior

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

Novo comportamento

A partir do .NET 8, um erro de compilação é emitido se seu código usa qualquer tipo derivado de BuildEventArgs e você compila 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

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

Versão introduzida

.NET 8 RC 1

Tipo de alteração

Esta mudança é uma mudança comportamental.

Razão para a alteração

BinaryFormatter serialização é obsoleta no .NET 8 e versões posteriores. Qualquer uso de lança uma exceção em tempo de BinaryFormatter execução. Como os eventos de compilação derivados personalizados do MSBuild usam BinaryFormatter, sua compilação falharia se você usasse esses eventos em sua compilação. O novo erro de compilação fornece uma falha mais normal.

Use um dos seguintes eventos internos recém-introduzidos para extensibilidade em vez de seu evento de compilação derivado personalizado:

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

APIs afetadas