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.
Ação recomendada
Use um dos seguintes eventos internos recém-introduzidos para extensibilidade em vez de seu evento de compilação derivado personalizado:
- ExtendedCustomBuildEventArgs
- ExtendedBuildErrorEventArgs
- ExtendedBuildMessageEventArgs
- ExtendedBuildWarningEventArgs
Como alternativa, você pode desativar temporariamente a verificação definindo explicitamente a variável MSBUILDCUSTOMBUILDEVENTWARNING
de ambiente como algo diferente de 1
.