Freigeben über


MSBuild – benutzerdefinierte abgeleitete Buildereignisse sind veraltet

Benutzerdefinierte abgeleitete Buildereignisse jeder Unterklasse von BuildEventArgs durch jede Builderweiterung (hauptsächlich benutzerdefinierte Aufgaben) wurden als veraltet markiert.

Vorheriges Verhalten

Vorher konnten Sie von jeder Unterklasse des Typs BuildEventArgs ableiten und diese Typen frei in benutzerdefinierten Aufgaben und anderen Erweiterungspunkten des Builds verwenden.

Neues Verhalten

Ab .NET 8 tritt ein Buildfehler auf, wenn Ihr Code einen Typ verwendet, der von BuildEventArgs abgeleitet ist, und Sie den Code mit der .NET 8-Version von MSBuild, d. h. über die Befehlszeile, erstellen.

Verwendung unsicherer BinaryFormatter während der Serialisierung des benutzerdefinierten Ereignistyps "MyCustomBuildEventArgs". Dies wird bald nicht mehr unterstützt. Verwenden Sie stattdessen "Extended*EventArgs". Weitere Informationen: https://aka.ms/msbuild/eventargs.

In .NET 10 wurde die Fehlermeldung wie folgt geändert:

Der benutzerdefinierte Ereignistyp "MyCustomBuildEventArgs" wird nicht unterstützt, da alle benutzerdefinierten Ereignistypen veraltet waren. Verwenden Sie stattdessen "Extended*EventArgs". Weitere Informationen: https://aka.ms/msbuild/eventargs.

Ab Visual Studio, Version 17.10, gilt das gleiche Verhalten für Builds in Visual Studio.

Eingeführte Version

.NET 8 RC 1

Art der Änderung

Diese Änderung ist eine Verhaltensänderung.

Grund für Änderung

BinaryFormatter Die Serialisierung ist in .NET 8 und höheren Versionen veraltet. Jede Verwendung von BinaryFormatter gilt als unsicher und löst zur Laufzeit eine Ausnahme aus. Da benutzerdefinierte abgeleitete MSBuild-Buildereignisse verwendet werden BinaryFormatter, stürzt ihr Build ab, wenn Sie diese Ereignisse in Ihrem Build verwendet haben. Der neue Buildfehler sorgt für einen geordneteren Fehler.

Verwenden Sie eines der folgenden neu eingeführten eingebauten Ereignisse für die Erweiterbarkeit anstelle des benutzerdefinierten abgeleiteten Erstellungsereignisses.

Alternativ können Sie die Überprüfung vorübergehend deaktivieren, indem Sie die Umgebungsvariable MSBUILDCUSTOMBUILDEVENTWARNING explizit auf einen anderen Wert als 1festlegen.

Betroffene APIs