Запись XmlSchema в MemoryStream не выполняется с исключением при запуске из Nunit - PullRequest
4 голосов
/ 04 января 2009

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

1 Ответ

2 голосов
/ 04 января 2009

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

// 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...