C# XmlSerializer BindingFailure
- Je obtenir un BindingFailure sur une ligne de code en utilisant le XmlSerializer:
XmlSerializer s = new XmlSerializer(typeof(CustomXMLSerializeObject));
L'assembly avec nom d'affichage CustomXMLSerializeObject.XmlSerializers "n'a pas de charge dans le "LoadFrom' contexte de liaison de l'AppDomain avec l'ID 1. La cause de l'échec a été: du Système.IO.FileNotFoundException: impossible de charger le fichier ou l'assembly XMLSerializeObject.XmlSerializers, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.
L'erreur est assez long et explique pré-lier les informations d'état et les lieux qu'il a regardé d'essayer et de trouver le fichier.
L'objet personnalisé je suis en train de desrialize est relativement simple - juste un tas de privé des entiers et des chaînes qui ont des accesseurs. J'ai une variable privée qui est une autre coutume, serializeable classe, mais que l'on n'a rien, mais privé des chaînes publiques accesseurs en elle.
La délicate partie? Cela se produit uniquement quand je désérialiser. Cette ligne de code fonctionne très bien lorsque je sérialiser l'objet. Il fonctionne très bien et l'objet se désérialisé et rempli parfaitement. N'a pas vraiment d'avis aucune perte de performance ou de longs temps de chargement.
Quel est exactement cet avertissement (pas d'une erreur ou d'exception, le programme fonctionne très bien par la suite)? Pourquoi se produit-il? Comment puis-je l'empêcher sans la simple désactivation de l'avertissement?
- Vous pouvez éviter d'avoir le runtime créer un assembly de sérialisation à la volée par un pré de cuisson avec le SGEN (pas le plus amusant, l'outil à utiliser cependant). Juste une pensée, même si je ne suis pas sûr pourquoi vous obtenez cette erreur.
- Qu'est-ce que l'espace de noms racine de votre projet appelé?
- Oui, les espaces de noms sont différents. Comme je n'ai pas envie de donner tout ce que pourrais obtenir mes fesses poursuivi, disons simplement que le nom de l'application de l'espace est "Namespace1" et les objets sérialisables sont dans "Namespace2".
- De vérifier .La version NET de la vôtre CustomXMLSerializeObject.XmlSerializers.dll il doit être même que celui de votre projet. Vérifiez ceci: stackoverflow.com/a/52848813/5639198
Vous devez vous connecter pour publier un commentaire.
Selon Étrange XmlSerializer erreur:
C'est probablement à être provoquée basé sur vos exceptions que vous pouvez choisir de le surveiller.
Pouvez-vous me dire comment votre les exceptions sont de configuration: Debug -> Exceptions
Si vous décochez la case "Jeté" case à cocher pour la BindingFailure en vertu de l'Géré Assistants de Débogage à l'exception devraient disparaître. Ou si vous ne voulez pas faire cela, vous pouvez tout simplement continuer depuis cette exception est voulu par la conception
Utiliser la méthode suivante pour construire votre xmlSerializer instance de résoudre le problème:
ensuite, vous n'avez pas besoin de désactiver l'exception des manipulations.
XmlSerializer
? L'ajout de plus en plus de types ici il suffit de créer plusXmlSerializer
s et de ne pas inclure les types de cours.FromTypes
est environ 10 fois plus lent que d'utiliser le constructeur. Si vous êtes à la création d'un lot de sérialiseurs qui pourrait être un problème.Selon MS VS 2010 Commentaires c'est la façon dont il a été conçu. Afin de prévenir cette exception et de prévenir un ralentissement au cours de l'exécution, vous devez générer un XML Sérialiseur de l'assemblée.
Il y a trois outils que j'ai pu trouver: Microsoft SGen, XGenPlus et Titre de Mvp.Xml.XGen. Comme de ce post, malheureusement, aucune de ces a été mis à jour depuis 2007.
Bien j'ai trouvé une solution. Je n'ai jamais pu accepter la désactivation des exceptions comme réponse. Semble juste quelque chose de mauvais....
Ce qui semble se passer, c'est que lors des précédentes assemblées, ou des versions antérieures de votre assemblée, certaines références ont été utilisées à l'extérieur. Même si votre code est peut-ont depuis longtemps abandonné ces références, les noms sont toujours, de mystérieux, quelque part, être recherché dans l'assemblée.
Aller à votre AssemblyInfo.cs fichiers et de trouver ThemeInfo:
Modifier le premier lieu à "Aucun":
Et de garder vos exceptions allumé! Je vais poster cette réponse à diverses questions de cette nature similaire.