在 .NET 7 中删除了自定义 BuildEventArgs 和 ITaskItems 的 BinaryFormatter 序列化
.NET 7 中的 MSBuild 不支持通过 BinaryFormatter
序列化程序对自定义 BuildEventArgs
派生类型和 ITaskItem
派生类型进行序列化。
引入的版本
MSBuild 17.4 (.NET SDK 7.0.100)
旧行为
MSBuild 使用 BinaryFormatter 跨特定边界保留从 BuildEventArgs 和 ITaskItem 派生的自定义类型,尤其是在多进程环境中运行时。
新行为
MSBuild 将不再支持此机制,因此使用从 BuildEventArgs 和 ITaskItem 派生的自定义类型的代码可能会失败。
更改原因
BinaryFormatter 在 .NET 5 中已过时。 根据此计划,dotnet GitHub 组织中的所有第一方代码都必须从 .NET 7 的使用中迁移出来。 此更改会影响 MSBuild 的用户公开功能。
建议的操作
在此 GitHub 讨论中与 MSBuild 团队联系,讨论特定用例以及如何从
TranslateDotNet
机制中迁移出来。避免从任务或日志记录时返回自定义派生类型。