"System.InvalidOperationException" - xsd XSD2Code Hoja de estilo XML C# Visual Studio

Creé un .xsd a partir de un archivo xml usando XSD.Exe de Visual Studio Tools (ahora Win 7 SDK Tools). Mi archivo .xsd:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="SceneFile" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="Scene">
<xs:complexType>
  <xs:sequence>
    <xs:element name="VNESceneName" type="xs:string" minOccurs="0" maxOccurs="1"/>
    <xs:element name="VNEPlayerName" type="xs:string" minOccurs="0" maxOccurs="1"/>
    <xs:element name="VNEButtons" minOccurs="0" maxOccurs="1">

(Cortado porque es demasiado largo) Luego usé XSD2Code (un complemento para VS) para crear un archivo .Designer.cs:

namespace VNEngine
{
using System;
using System.Diagnostics;
using System.Xml.Serialization;
using System.Collections;
using System.Xml.Schema;
using System.ComponentModel;
using System.IO;
using System.Text;
using System.Collections.Generic;


public partial class Scene
{

    private string vNESceneNameField;
    private string vNEPlayerNameField;
    private List<SceneVNEButton> vNEButtonsField;
    private SceneVNETextBox vNETextBoxField;
    private SceneVNEBackground vNEBackgroundField;
    private List<SceneVNESprite> vNESpritesField;
    private SceneVNEMusic vNEMusicField;
    private static System.Xml.Serialization.XmlSerializer serializer;

    public Scene()
    {
        this.vNEMusicField = new SceneVNEMusic();
        this.vNESpritesField = new List<SceneVNESprite>();
        this.vNEBackgroundField = new SceneVNEBackground();
        this.vNETextBoxField = new SceneVNETextBox();
        this.vNEButtonsField = new List<SceneVNEButton>();
    }

    public string VNESceneName
    {
        get
        {
            return this.vNESceneNameField;
        }
        set
        {
            this.vNESceneNameField = value;
        }
    }

(cortado porque es demasiado largo)

Ahora quiero crear una "Escena" (la etiqueta raíz xml) en mi código C#:

            Scene testscene = new Scene();
            testscene.VNEPlayerName = "hallo";

Todo hasta este punto funciona, pero cuando quiero guardar o serializar (o deserializar) así:

            testscene.SaveToFile(@"Content/Scenes/testscene.xml");

Y ahora, al ejecutar, aparece un error en la línea (en SceneFiles.designer.cs)

    private static System.Xml.Serialization.XmlSerializer Serializer
    {
        get
        {
            if((serializer == null))
            {
       --->  serializer = new System.Xml.Serialization.XmlSerializer(typeof(Scene));
            }
            return serializer;
        }
    }

Y mi error es así:

//

Eine nicht behandelte Ausnahme des Typs "System.InvalidOperationException" ist en System.Xml.dll aufgetreten.

Zusätzliche Informationen: Fehler beim Reflektieren des Typs 'VNEngine.Scene'.

//

Mi traducción aproximada al inglés:

Una excepción no manejada: System.InvalidOperationException apareció en System.Xml.dll Información adicional: Error al reflejar el tipo 'VNEngine.Scene'

//

¿Alguien sabe qué hice mal?

Lo mismo funcionó con una hoja de estilo .xsd más pequeña, no tan compleja y no con xsd.exe.

preguntado el 01 de julio de 12 a las 17:07

1 Respuestas

Ok, lo encontré, XSD2Code tiene una opción GenerateXMLAttributes que debe establecerse como verdadera.

Respondido 27 ago 12, 09:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.