Dela via


MSBuild-anpassade härledda bygghändelser inaktuella

Anpassade härledda bygghändelser för alla underklasser av BuildEventArgs eventuella utökningsbarheter (främst anpassade uppgifter) har föråldrats.

Tidigare beteende

Tidigare kunde du härleda från alla underklasser av BuildEventArgs och använda dessa typer fritt i anpassade uppgifter och andra utökningsbarhetspunkter.

Nytt beteende

Från och med .NET 8 utfärdas ett versionsfel om koden använder någon typ som härleds från BuildEventArgs och du skapar med hjälp av .NET 8-versionen av MSBuild, dvs. från kommandoraden:

Användning av osäker BinaryFormatter under serialiseringen av den anpassade händelsetypen "MyCustomBuildEventArgs". Detta kommer snart att bli inaktuellt. Använd Extended*EventArgs i stället. Mer information: https://aka.ms/msbuild/eventargs.

I .NET 10 ändrades felmeddelandet till:

Den anpassade händelsetypen "MyCustomBuildEventArgs" stöds inte eftersom alla anpassade händelsetyper är inaktuella. Använd Extended*EventArgs i stället. Mer information: https://aka.ms/msbuild/eventargs.

Från och med Visual Studio version 17.10 gäller samma beteende för versioner i Visual Studio.

Version lanserad

.NET 8 RC 1

Typ av ändring

Den här ändringen är en beteendeförändring.

Orsak till ändring

BinaryFormatter serialisering är föråldrad i .NET 8 och senare versioner. All användning av BinaryFormatter anses osäker och utlöser ett undantag vid körning. Eftersom anpassade kompileringshändelser i MSBuild använder BinaryFormatterskulle bygget krascha om du använde dessa händelser i din version. Det nya byggfelet ger en mer elegant misslyckande.

Använd någon av följande nyligen introducerade, inbyggda händelser för utökningsbarhet i stället för din anpassade härledda bygghändelse:

Du kan också tillfälligt inaktivera kontrollen genom att uttryckligen ange miljövariabeln MSBUILDCUSTOMBUILDEVENTWARNING till något annat än 1.

Berörda API:er