Я пытаюсь преобразовать объект XmlSchema в строку. Я создаю простую схему XmlSchema, компилирую ее и затем конвертирую следующим образом:
public string ConvertXmlSchemaToString(XmlSchema xmlSchema)
{
String schemaAsString = String.Empty;
// compile the schema
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add(xmlSchema);
schemaSet.ValidationEventHandler += new ValidationEventHandler(schemaSet_ValidationEventHandler);
schemaSet.Compile();
// allocate memory for string output
MemoryStream memStream = new MemoryStream(1024);
xmlSchema.Write(memStream);
memStream.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader(memStream);
schemaAsString = reader.ReadToEnd();
return schemaAsString;
}
При запуске в качестве консольного приложения все работает нормально, но при запуске из Nunit я получаю исключение в "xmlSchema.Write (memStream);" линия.
исключение: произошла ошибка при создании XML-документа.
внутреннее исключение: среда CLR обнаружила недопустимую программу.





Вероятно, не решит вашу проблему, но вы можете захотеть обернуть использование ваших потоков таким образом.
// allocate memory for string output
using (MemoryStream MemStream = new MemoryStream(1024))
{
xmlSchema.Write(MemStream);
MemStream.Seek(0, SeekOrigin.Begin);
using (StreamReader reader = new StreamReader(MemStream))
{
SchemaAsString = reader.ReadToEnd();
}
}
return SchemaAsString;
Таким образом, потоки удаляются должным образом. Возможно, это то, на что жалуется NUnit.