2009-06-08 2 views
1

J'utilise Visual Web Developer pour créer une bibliothèque de classes Silverlight. J'ai un autre projet où la bibliothèque de classes est importée et mise en œuvre. Il charge un fichier XML et j'utilise XmlSerializer.Deserialize dans une classe que j'ai créée avec xsd.exe.ManagedRuntimeError System.NotSupportedException: XLinq. Développement de Silverlight en C# avec Visual Web Developer

Parfois, lors du chargement du XML, je reçois cette erreur:

 
Unhandled Error in Silverlight 2 Application 
Code: 4004  
Category: ManagedRuntimeError  
Message: System.InvalidOperationException: There is an error in XML document (149, 10). ---> System.NotSupportedException: XLinq 
    at System.Xml.Serialization.XmlSerializationReader.ReadXmlNodes(Boolean elementCanBeType) 
    at System.Xml.Serialization.XmlSerializationReader.ReadTypedPrimitive(XmlQualifiedName type, Boolean elementCanBeType) 
    at System.Xml.Serialization.XmlSerializationReader.ReadTypedPrimitive(XmlQualifiedName type) 

J'ai découvert qu'il se produit seulement quand il y a une balise appelée extensions dans mon fichier XML. Au début, je pensais que c'était incorrectement défini dans la classe C# générée par xsd.exe, mais cela fonctionne si je change les extensions à un autre nom. Malheureusement, il n'est pas possible de changer le nom de cette balise en permanence. J'ai exclu les mots réservés. Google n'a aucune information sur cette erreur.

Répondre

1

C'est assez bizarre. La trace de pile que vous avez affichée semble être impossible. Si vous examinez la version 2.0 Silverlight de System.Xml.dll, vous remarquerez qu'il n'existe aucune classe appelée XmlSerializationReader. Cette classe est uniquement présente dans la version complète de System.Xml.dll.

Avez-vous tenté de déployer la version cadre de System.Xml.dll? Ou utilisez-vous une bibliothèque différente qui me manque pour accéder à cette classe?

+0

XmlSerializationReader se trouve dans la classe System.Xml.Serialization. – nerdabilly

+0

@nerdabilly, comment vérifiez-vous cela? J'ai supprimé toutes les DLL du réflecteur, puis chargé explicitement le System.Xml.dll à partir du répertoire Silverlight et il ne contient pas cette classe. – JaredPar

+0

@JaredPar, vous devez également ajouter une référence à la bibliothèque System.Xml.Serialization.dll. Il devrait être dans le répertoire Silverlight. – nerdabilly

Questions connexes