J'ai un problème avec la désérialisation XML qui me déroute.
Je construis une application qui prend en charge la personnalisation locale de divers services utilisés. J'ai mis en place une classe Abstract Servicelocator Code> dont les méthodes renvoient divers objets. Chaque installation personnalisée est responsable de la mise en œuvre d'une sous-classe et de la mise en œuvre de ces méthodes. La viande de cette classe ressemble à ceci: p>
System.InvalidOperationException : There is an error in XML document (0, 0).
----> System.IO.FileLoadException : Could not load file or assembly 'ClientCustomFeatures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Invalid pointer (Exception from HRESULT: 0x80004003 (E_POINTER))
----> System.ArgumentNullException : Value cannot be null.
Parameter name: path1
4 Réponses :
J'ai eu des problèmes avec le chargeur de montage (fusion?) Lorsqu'un assemblage charge un autre assemblage qui a elle-même des références (non-GAC). YOURDLL.XMLSERIALIZERS.DLL CODE> pourrait être un tel assemblage. Essayez de désactiver l'option Visual Studio pour générer automatiquement un ensemble de sérialisation XML (options de projet) - cela supprimera l'assemblage supplémentaire (et donc la dépendance à ce sujet). P>
Pour aider à diagnostiquer les problèmes de chargement de l'assemblage, jetez un coup d'œil à la Visionneuse de journal de fusion (aka fuslogvw.exe). P>
Fusion == le composant .NET qui localise et charge les assemblages. P>
Essayez de remplacer la ligne: avec: p>
Si votre montage personnalisé ne sait pas où charger l'assemblage contenant la classe ClientCustomFeatures, cela se produira. Cela se produit lorsque vous avez déployé votre assemblage personnalisé à un emplacement qui n'est pas sur le chemin de votre ensemble principal et votre assemblage principal n'est pas dans le GAC. Donc, si vos asservies personnalisées sont chargées de sous-répertoires de votre assemblée principale, cela devrait partir. Cependant, s'ils sont situés dans des endroits arbitraires, vous aurez un problème car ils doivent charger votre assemblage principal car ils ont besoin d'un accès au type clientCustomFeatures. P>
Eh bien, toutes les assemblées sont dans le même répertoire, donc je ne pense pas que ce soit le cas ici.
Bonjour Robert, jetez un coup d'œil sur ce site: msdn.microsoft.com/fr- US / Bibliothèque / AA302290.aspx Il possède un certain nombre d'idées de dépannage Excelent qui font référence à la probelm que vous obtenez et que vous faites des raisons pour lesquelles cela pourrait se produire. Il existe également un lien vers un outil qui devrait vous aider à résoudre ce problème. Comme nous n'avons pas accès à tout votre code, nous ne pouvons pas faire cela pour vous, mais je suis très intéressant de savoir quel est le résultat de cette petite aventure :) Vous voudrez regarder les «exceptions dans le constructeur " section
Juste pensé à quelque chose: Nunit fonctionne dans un endroit de cache temporaire et il peut ne pas disposer des privilèges appropriés de charger toutes les assemblées et de générer des cours. Mais lisez l'URL ci-dessus, il a beaucoup plus d'itinéraires d'investigation ou vous.
Je ne connais pas cette erreur spécifique, mais notez que XMLSerializer utilise la génération de code et la compilation dynamique, il tente de créer un nouveau i> Assembly qui fait référence à ceux dont il a besoin. Il semble que cette nouvelle assemblée (générée) n'est pas satisfaite de la référence. Sont (par exemple) tous les types nécessaires impliqués
public code>?
C'est sûr un problème de référence. Ouvrez ClientCustomFeatures.dll dans le réflecteur et recherchez toutes les références que vous n'avez peut-être pas.