我有以下示例代码,它为x86和x64生成不同的输出。XmlSerializer为x86和x64生成不同的输出
class SampleSerializer
{
public static string Serialize(string[] samples)
{
var xmlDocument = string.Empty;
var xmlSerializer = new XmlSerializer(typeof(string[]));
using (var ms = new MemoryStream())
{
xmlSerializer.Serialize(
ms,
samples);
xmlDocument = Encoding.UTF8.GetString(ms.ToArray());
}
return xmlDocument;
}
}
class Program
{
static void Main(string[] args)
{
var samples = new string[] { };
var doc = SampleSerializer.Serialize(samples);
Console.WriteLine(doc);
}
}
当平台目标x86的输出是:
<?xml version="1.0"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
当平台目标x64时,输出为:
<?xml version="1.0"?>
<ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
可以达到同样与任何CPU和优先选择32位设置或取消设置。
如果仔细看看,命名空间xsi
和xsd
的顺序是不同的。为什么这样?我期望命名空间的顺序是独立于平台的。
这是有道理的。 –