从 Nunit 运行时,将 XmlSchema 写入 MemoryStream 失败并出现异常

发布于 2024-07-11 18:05:09 字数 932 浏览 8 评论 0原文

我正在尝试将 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 文档时出错。

内部异常是:公共语言运行时检测到无效程序。

I'm trying to convert an XmlSchema object to string.
I'm building a simple XmlSchema, compiling it, and then converting it as follows:

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;
}

While running as a console app, everything works fine, but when running from Nunit I get an exception in the "xmlSchema.Write(memStream);" line.

exception is : There was an error generating the XML document.

inner exception is : Common Language Runtime detected an invalid program.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

她比我温柔 2024-07-18 18:05:09

可能无法解决您的问题,但您可能希望像这样将使用包装在流周围。

// 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 所抱怨的。

Probably won't fix your problem, but you might want to wrap usings around your streams like so.

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

That way the streams are disposed of properly. That might be what NUnit is complaining about.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文