Condividi tramite


Eventi di compilazione personalizzati derivati di MSBuild deprecati

Gli eventi di compilazione derivati e personalizzati di qualsiasi sottoclasse di BuildEventArgs da qualsiasi estensione di compilazione (principalmente attività personalizzate) sono stati resi obsoleti.

Comportamento precedente

In precedenza, è possibile derivare da qualsiasi sottoclasse di BuildEventArgs e usare tali tipi liberamente nelle attività personalizzate e in altri punti di estendibilità della compilazione.

Nuovo comportamento

A partire da .NET 8, viene generato un errore di compilazione se il codice usa qualsiasi tipo derivato da BuildEventArgs e si compila usando la versione .NET 8 di MSBuild, ovvero dalla riga di comando:

Utilizzo di BinaryFormatter non sicuro durante la serializzazione del tipo di evento personalizzato 'MyCustomBuildEventArgs'. Questa operazione sarà deprecata a breve. Usare invece Extended*EventArgs. Altre informazioni: https://aka.ms/msbuild/eventargs.

In .NET 10 il messaggio di errore è stato modificato in:

Il tipo di evento personalizzato 'MyCustomBuildEventArgs' non è supportato perché tutti i tipi di evento personalizzati sono deprecati. Usare invece Extended*EventArgs. Altre informazioni: https://aka.ms/msbuild/eventargs.

A partire da Visual Studio versione 17.10, lo stesso comportamento si applica alle compilazioni in Visual Studio.

Versione introdotta

.NET 8 RC 1

Tipo di modifica

Questa modifica è una modifica funzionale.

Motivo della modifica

BinaryFormatter la serializzazione è obsoleta in .NET 8 e versioni successive. Qualsiasi uso di BinaryFormatter viene considerato non sicuro e genera un'eccezione in fase di esecuzione. Poiché gli eventi di compilazione derivati personalizzati di MSBuild usano BinaryFormatter, la compilazione si arresta in modo anomalo se questi eventi sono stati usati nella compilazione. Il nuovo errore di compilazione fornisce una modalità di errore più elegante.

Usa uno dei seguenti eventi predefiniti recentemente introdotti per l'estensione anziché il tuo evento di compilazione derivato personalizzato.

In alternativa, è possibile disabilitare temporaneamente il controllo impostando in modo esplicito la variabile MSBUILDCUSTOMBUILDEVENTWARNING di ambiente su un valore diverso da 1.

Le API interessate