C# 用于启动进程的环境块的长度不能超过65535字节

C# 用于启动进程的环境块的长度不能超过65535字节,c#,xml-serialization,environment-variables,invalidoperationexception,C#,Xml Serialization,Environment Variables,Invalidoperationexception,在XmlSerializer对象上调用Serialize方法时,这是一个invalidoOperationException 例外情况的完整信息如下: “用于启动进程的环境块的长度不能超过65535字节。您的环境块的长度为85754字节。请删除一些环境变量,然后重试。” 这发生在.NET 4.0应用程序中的Windows 7计算机上,该应用程序试图序列化实现IXmlSerializable的对象。实际对象是不相关的,因为它发生在许多不同的对象上,复杂而简单,但没有任何特定的东西。它也是不可复制的

XmlSerializer
对象上调用
Serialize
方法时,这是一个
invalidoOperationException

例外情况的完整信息如下: “用于启动进程的环境块的长度不能超过65535字节。您的环境块的长度为85754字节。请删除一些环境变量,然后重试。

这发生在.NET 4.0应用程序中的Windows 7计算机上,该应用程序试图序列化实现
IXmlSerializable
的对象。实际对象是不相关的,因为它发生在许多不同的对象上,复杂而简单,但没有任何特定的东西。它也是不可复制的,互联网上关于这个特定(相当具体)错误消息的信息也不多

  • 有人知道为什么会发生这种情况,以及您的机器需要处于何种状态才能复制这种情况吗
  • 纠正客户端计算机上的问题的适当步骤(手动或编程)是什么

  • 提前感谢您提供的任何建议或解决方案,这是我第一次看到这种情况发生,也是我为数不多的几次没有找到有关StackOverflow的答案之一。

    环境块是存储环境变量的地方。在运行构建之前,让客户机检查环境变量。如果不是一个大列表,那么可能是在构建过程中生成了环境变量。像Jenkins或Bambor这样的构建系统往往会生成环境变量,因此在构建过程中进行检查是确定问题所在的最佳方法


    如果您能够捕获错误并输出环境(通过在CMD或Powershell中运行“env”),则可能会导致进一步的了解,并允许客户端中断其环境。

    错误消息表明机器的环境变量有问题。“删除一些环境变量并重试”这个特定的Windows 7框有什么特别之处吗?我理解错误消息,但我不确定机器是如何或为什么进入这种状态的。我不能说太多关于实际机器或它的配置,因为这是客户端报告的错误。我在等待更多信息,但我想我会在这段时间询问,以防有人知道更多信息。这可能是某种机器损坏,或者你的应用程序运行的机器状态不好。特别是当应用程序与其他使用同一台机器的人在共享主机环境中运行时。异常消息非常清楚,非常不清楚你为什么要问这个问题。XML序列化使用System.CodeDom来运行C#编译器,显然这就是这里失败的原因。使用sgen.exe将是一种解决方法,没有任何明显的理由可以避免修复真正的问题。@HansPassant-应用程序在生成时确实附带了使用sgen生成的XmlSerializer程序集,因此这不是一种有效的解决方法,错误仍然会发生在文件中。我知道异常消息讲述了这个故事以及如何更正它。这就是我告诉用户要做的,通过控制面板将他们指向环境变量部分。问题(标记为1和2)是为什么会发生这种情况以及如何发生这种情况,以及是否有合理的程序解决方案来恢复?用户甚至不知道环境变量是什么,更不用说能够“删除”一些了。