Udostępnij przez


Zdeprecjonowane niestandardowe zdarzenia budowy pochodnej w MSBuild

Niestandardowe zdarzenia kompilacji pochodnych dla dowolnej podklasy BuildEventArgs przez dowolną rozszerzalność kompilacji (głównie niestandardowe zadania) zostały wycofane.

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, a kompilację wykonujesz przy użyciu programu MSBuild w wersji .NET 8, czyli przez interfejs wiersza polecenia.

Użycie niezabezpieczonego elementu BinaryFormatter podczas serializacji niestandardowego typu zdarzenia "MyCustomBuildEventArgs". Wkrótce zostanie to przestarzałe. Zamiast tego powinieneś użyć Extended*EventArgs. Więcej informacji: https://aka.ms/msbuild/eventargs.

W programie .NET 10 komunikat o błędzie został zmieniony na:

Niestandardowy typ zdarzenia "MyCustomBuildEventArgs" nie jest obsługiwany, ponieważ wszystkie niestandardowe typy zdarzeń zostały uznane za przestarzałe. Zamiast tego powinieneś użyć Extended*EventArgs. Więcej informacji: https://aka.ms/msbuild/eventargs.

Począwszy od programu Visual Studio w wersji 17.10, to samo zachowanie dotyczy kompilacji w programie Visual Studio.

Wersja wprowadzona

.NET 8 RC 1

Typ zmiany

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

BinaryFormatter serializacja jest przestarzała na platformie .NET 8 i nowszych wersjach. Każde użycie BinaryFormatter jest uznawane za niezabezpieczone i zgłasza wyjątek w czasie wykonywania. Ponieważ niestandardowe zdarzenia kompilacji pochodnej programu MSBuild używają BinaryFormatterpolecenia , kompilacja uległa awarii w przypadku użycia tych zdarzeń w kompilacji. Nowy błąd kompilacji zapewnia bardziej eleganckie niepowodzenie.

Użyj jednego z następujących nowo wprowadzonych wbudowanych zdarzeń na potrzeby rozszerzalności zamiast niestandardowych zdarzeń kompilacji pochodnej:

Alternatywnie można tymczasowo wyłączyć sprawdzanie, jawnie ustawiając zmienną środowiskową MSBUILDCUSTOMBUILDEVENTWARNING na inną wartość niż 1.

Interfejsy API, których dotyczy problem