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 binärformaterare utan säkerhet 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
Om du skapar från Visual Studio ändras inte beteendet om du inte väljer att ange MSBUILDCUSTOMBUILDEVENTWARNING
miljövariabeln till 1 (tillgänglig i Visual Studio version 17.8 och senare).
Version introducerad
.NET 8 RC 1
Typ av ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
BinaryFormatter serialisering är föråldrad i .NET 8 och senare versioner. All användning av BinaryFormatter genererar ett undantag vid körning. Eftersom anpassade kompileringshändelser i MSBuild använder BinaryFormatterkraschar bygget om du använder dessa händelser i din version. Det nya byggfelet ger ett mer graciöst fel.
Rekommenderad åtgärd
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:
- ExtendedCustomBuildEventArgs
- ExtendedBuildErrorEventArgs
- ExtendedBuildMessageEventArgs
- ExtendedBuildWarningEventArgs
Du kan också tillfälligt inaktivera kontrollen genom att uttryckligen ange miljövariabeln MSBUILDCUSTOMBUILDEVENTWARNING
till något annat än 1
.