Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vlastní odvozené události sestavení u jakékoli podtřídy BuildEventArgs byly z důvodu rozšiřitelnosti sestavení (především v případě vlastních úloh) označeny jako zastaralé.
Předchozí chování
Dříve jste mohli tyto typy odvodit z jakékoli podtřídy BuildEventArgs a používat je volně ve vlastních úkolech a dalších bodech rozšiřitelnosti sestavení.
Nové chování
Počínaje rozhraním .NET 8 se objeví chyba sestavení, pokud váš kód používá jakýkoli typ odvozený z BuildEventArgs a sestavujete pomocí verze .NET 8 nástroje MSBuild, tedy z příkazového řádku:
Používání nezabezpečeného BinaryFormatteru při serializaci vlastního typu události 'MyCustomBuildEventArgs'. Tato funkce bude brzy zastaralá. Místo toho použijte extended*EventArgs. Další informace: https://aka.ms/msbuild/eventargs.
V .NET 10 se chybová zpráva změnila na:
Vlastní typ události MyCustomBuildEventArgs není podporován, protože všechny vlastní typy událostí byly zastaralé. Místo toho použijte extended*EventArgs. Další informace: https://aka.ms/msbuild/eventargs.
Od sady Visual Studio verze 17.10 platí stejné chování pro sestavení v sadě Visual Studio.
Verze byla představena
.NET 8 RC 1
Typ změny
Tato změna je změna chování.
Důvod změny
BinaryFormatter serializace je zastaralá v .NET 8 a novějších verzích. Jakékoli použití BinaryFormatter se považuje za nezabezpečené a vyvolá výjimku za běhu. Vzhledem k tomu, že se používají BinaryFormattervlastní odvozené události sestavení NÁSTROJE MSBuild, dojde k chybovému ukončení sestavení, pokud jste tyto události použili v sestavení. Nová chyba sestavení umožňuje hladší selhání.
Doporučená akce
Místo vlastní odvozené události sestavení použijte jednu z následujících nově zavedených předdefinovaných událostí pro rozšiřitelnost:
- ExtendedCustomBuildEventArgs
- ExtendedBuildErrorEventArgs
- ExtendedBuildMessageEventArgs
- ExtendedBuildWarningEventArgs
Případně můžete dočasně zakázat kontrolu tím, že explicitně nastavíte proměnnou MSBUILDCUSTOMBUILDEVENTWARNING prostředí na jinou hodnotu než 1.