我们在消息应用程序(流微服务)中使用 Assembly
SolaceSystems.SolClient.Messaging
。我们的应用程序部署在 OpenShift 容器中。我们使用 C# 和 .NET 6.0。目前一切正常。
将我们的应用程序升级到 .NET 8.0(从 .NET 6.0)时,我们收到以下错误: System.Runtime.Searialization.Formatters.BinaryFormatter.Serialize(System.IO.STream,对象)
如上所述,.NET 8.0 是否不支持 Solace 的汇编?还是我错过了什么?
任何方向都会对我有很大帮助。
当我将 TargetFramework 更改为 .NET 6.0 时,一切都按预期工作,没有任何错误。但是当 TargetFramework 更改为 .NET 8.0 时,会抛出上述错误。
问题是BinaryFormatter。它早在 .NET 5.0 中就被标记为已弃用/过时。
跳转到 .NET 8:BinaryFormatter 在大多数项目类型中被禁用
从 .NET 8 开始,受影响的方法在运行时在除 Windows 窗体和 WPF 之外的所有项目类型中抛出 NotSupportedException。 API 在所有项目类型中仍然过时(作为错误),包括 Windows 窗体和 WPF。
现在在 .NET 9.0 中:BinaryFormatter 从 .NET 9 中删除了
从 .NET 9 开始,我们不再在运行时包含 BinaryFormatter 的实现(.NET Framework 保持不变)。 API 仍然存在,但无论项目类型如何,它们的实现总是会引发异常。因此,设置现有的向后兼容性标志不再足以使用 BinaryFormatter。
您还没有说明异常是否是由于使用
SolaceSystems.SolClient.Messaging
引发的,或者是否是在代码的其他地方引发的。堆栈跟踪应该告诉您哪些代码正在尝试使用BinaryFormatter
,直到您/我们知道我们将无法进一步指导您。