Запись XmlSchema в MemoryStream завершается ошибкой с исключением при запуске из Nunit.

Я пытаюсь преобразовать объект 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-документа.

внутреннее исключение: Common Language Runtime обнаружил недопустимую программу.


person Community    schedule 04.01.2009    source источник


Ответы (1)


Вероятно, это не решит вашу проблему, но вы можете захотеть обернуть использование вокруг своих потоков таким образом.

// 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 жалуется.

person Cameron MacFarland    schedule 04.01.2009