2009-09-16 6 views
8

J'ai une DLL qui contient des classes générées par XSD. Malheureusement, XSD.exe rend ces classes publiques, ce qui entraîne "Commentaire XML manquant pour le type publiquement visible ou membre XYZ" avertissements. De plus, je préfère ne pas exposer ces classes de ma DLL. Existe-t-il un moyen, à moins de modifier manuellement le .cs généré, pour rendre ces classes interne?Existe-t-il un moyen d'obtenir xsd.exe pour générer des classes avec une portée "interne"?

Répondre

5

Ceci est une réponse très courte qui pourrait être étendue à un livre.

Non, xsd.exe ne peut pas faire ce que vous voulez.

Toutefois, vous pouvez utiliser les techniques décrites dans this article pour accéder à la classe XmlCodeExporter qui fait partie de l'infrastructure générant du code à partir de schémas XML. Une fois cela fait, vous avez une copie du CodeDOM pour le code généré en mémoire. vous pouvez parcourir toutes les classes de l'espace de noms et les définir comme internes.

Il se peut que l'effort requis pour supprimer cet avertissement soit plus important que vous le souhaiteriez.

Une autre façon de supprimer l'avertissement est de générer le code dans un ensemble pour lequel les documents XML sont désactivés (après tout, qui a besoin de documents pour le code généré?)

+0

Ouais nous avons examiné aussi. Nous avons fini par écrire un script awk que nous invoquons dans le cadre de notre processus de construction pour augmenter le code généré avec ce dont nous avons besoin. – womp

+1

Merci. Je vais le classer sous "plus de problèmes que ça ne le vaut", je pense. –

Questions connexes