We use VS2019 for the project. We have some unit tests like this:
// Arrange
var expectedXml =
"<?xml version=\"1.0\" encoding=\"utf-16\"?><LeadData xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><LanguagePreference>English</LanguagePreference>...</LeadData>";
// Act
var xmlString = contract.ToXmlString();
// Assert
Assert.AreEqual(expectedXml, xmlString);
ToXmlString() is something like this:
var xmlSerializer = new XmlSerializer(this.GetType());
var stringWriter = new StringWriter();
var xmlWriter = new XmlTextWriter(stringWriter) { Formatting = Formatting.None };
xmlSerializer.Serialize(xmlWriter, this);
return stringWriter.ToString();
The unit test passed in VS2019. It targets .net framework 4.5.1.
However, if we use VS2022, although still targets .net framework 4.5.1, the unit test failed. It generated xml string is:
"<?xml version=\"1.0\" encoding=\"utf-16\"?><LeadData xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><LanguagePreference>English</LanguagePreference>...</LeadData>";
Somehow, xmlns:xsd and xmlns:xsi changed the order.
Anyone know why is this? Thanks.