Xml 序列化在调试和发布模式下是不同的

Xml 序列化在调试和发布模式下是不同的,xml,web-services,msbuild,xml-serialization,xmlserializer,Xml,Web Services,Msbuild,Xml Serialization,Xmlserializer,我们的.NET4应用程序使用了一个外部的.NETWebService,在调试模式下一切正常,但在发布模式下,我们遇到了一个序列化错误。检查发送到服务的SOAP请求,发现其中一个元素存在一些差异 调试模式下的SOAP元素 <Key>pswhistory</Key> <Value xsi:type="ArrayOfString"> <string>a</string>

我们的.NET4应用程序使用了一个外部的.NETWebService,在调试模式下一切正常,但在发布模式下,我们遇到了一个序列化错误。检查发送到服务的SOAP请求,发现其中一个元素存在一些差异

调试模式下的SOAP元素

        <Key>pswhistory</Key>
        <Value xsi:type="ArrayOfString">
           <string>a</string>
           <string>B</string>
        </Value>
pswhistory
A.
B
释放模式中的Soap元素

        <Key>pswhistory</Key>
        <Value xmlns:q1="http://tempuri.org/" xsi:type="q1:ArrayOfString">
           <q1:string>a</q1:string>
           <q1:string>B</q1:string>
        </Value>
pswhistory
A.
B
有人能用XMLSerializer解释这种行为吗


谢谢

听起来像是需要显式声明的名称空间。你能附上你试图序列化的代码/业务对象的样本吗?

@Phil-你说得对。在发布模式下生成消息时,soap消息中的命名空间不正确

问题是因为自动生成的序列化程序集。通过关闭项目属性中的“生成序列化程序集”选项,问题得到了解决。启用此选项后,编译器将使用sgen.exe为程序集中的所有类型生成序列化程序集,这将增加应用程序启动时间。由于某种原因,生成的程序集引用了错误的程序集。请参阅下面的墨水了解更多详细信息

将“生成序列化程序集”从“自动”更改为“关闭”修复了我遇到的一个问题,谢谢!