Niestandardowe zdarzenia kompilacji pochodnej programu MSBuild przestarzałe
Niestandardowe zdarzenia kompilacji pochodnej dla dowolnej podklasy BuildEventArgs według dowolnej rozszerzalności kompilacji (głównie zadań niestandardowych) zostały przestarzałe.
Poprzednie zachowanie
Wcześniej można było pochodzić z dowolnej podklasy BuildEventArgs i używać tych typów swobodnie w zadaniach niestandardowych i innych punktach rozszerzalności kompilacji.
Nowe zachowanie
Począwszy od platformy .NET 8, zostanie wyświetlony błąd kompilacji, jeśli kod używa dowolnego typu pochodzącego z BuildEventArgs programu i kompilujesz przy użyciu programu MSBuild w wersji .NET 8, czyli z wiersza polecenia:
Użycie niezabezpieczonego elementu BinaryFormatter podczas serializacji niestandardowego typu zdarzenia "MyCustomBuildEventArgs". Wkrótce zostanie to przestarzałe. Zamiast tego użyj polecenia Extended*EventArgs. Więcej informacji: https://aka.ms/msbuild/eventargs
W przypadku kompilacji z programu Visual Studio nie ma żadnych zmian w zachowaniu, chyba że zdecydujesz się na ustawienie MSBUILDCUSTOMBUILDEVENTWARNING
zmiennej środowiskowej na 1 (dostępnej w programie Visual Studio w wersji 17.8 lub nowszej).
Wprowadzona wersja
.NET 8 RC 1
Typ zmiany
Ta zmiana jest zmianą behawioralną.
Przyczyna wprowadzenia zmiany
BinaryFormatter serializacja jest przestarzała na platformie .NET 8 i nowszych wersjach. Każde użycie zgłasza BinaryFormatter wyjątek w czasie wykonywania. Ponieważ niestandardowe zdarzenia kompilacji pochodnej programu MSBuild używają BinaryFormatterpolecenia , kompilacja ulegnie awarii, jeśli użyjesz tych zdarzeń w kompilacji. Nowy błąd kompilacji zapewnia bardziej wdzięczny błąd.
Zalecana akcja
Użyj jednego z następujących nowo wprowadzonych zdarzeń wbudowanych na potrzeby rozszerzalności zamiast niestandardowego zdarzenia pochodnej kompilacji:
- ExtendedCustomBuildEventArgs
- ExtendedBuildErrorEventArgs
- ExtendedBuildMessageEventArgs
- ExtendedBuildWarningEventArgs
Alternatywnie można tymczasowo wyłączyć sprawdzanie, jawnie ustawiając zmienną środowiskową MSBUILDCUSTOMBUILDEVENTWARNING
na inną wartość niż 1
.