En C #, est-il un moyen d'accéder à des commentaires xml (les tags dans VS) dans le code source lors de l'exécution?
-
27-10-2019 - |
Question
Dans Visual Studio, les commentaires xml peut être ajouté à des méthodes / classes pour fournir de la documentation. Voir http://msdn.microsoft.com/en-us/magazine/cc302121. ASPX .
Visual Studio génère des fichiers à partir de ces commentaires xml et les exportations eux, donc ils sont accessibles à coup sûr.
Ma question est, est-il une classe d'une sorte qui nous laissent l'accès au programme, le texte xml lors de l'exécution? (Je pense que la façon dont la force brute est d'analyser les fichiers exportés, mais ce n'est pas une solution propre)
La raison pour laquelle je veux faire est parce que je fais une sorte d'un programme d'aide pour un programme plus vaste, donc je veux transmettre les commentaires xml à l'écran. J'ai le nom de la propriété par la réflexion, donc est-il un moyen de nourrir le dos de nom dans une certaine classe et obtenir la documentation xml?
Je recherche déjà essayé, mais je ne pouvais pas trouver quoi que ce soit. Je pourrais être libellé mal. Est-ce possible?
La solution
Pour autant que je maintenant, les commentaires XML ne sont pas enregistrées sous forme de métadonnées dans le fichier binaire assemblage (.exe ou .dll). La seule option est d'analyser directement le fichier XML généré par Visual Studio.
Autres conseils
Commentaires XML se dépouillé de l'exécutable. - C'est la raison pour laquelle il y a un drapeau spécial du compilateur pour générer la documentation XML à partir d'eux, afin qu'ils ne se perdent pas
Il existe des outils qui vous aideront à générer l'aide HTML et d'autres formats à partir de ces fichiers XML.
// From type.
var typeDoc = DocsService.GetXmlFromType(typeof(Stub));
// From property.
var propertyInfo = typeof(Stub).GetProperty("PropertyWithDoc");
var propertyDoc = DocsService.GetXmlFromMember(propertyInfo);
// From method.
var methodInfo = typeof(Stub).GetMethod("MethodWithGenericParameter");
var methodDoc = DocsService.GetXmlFromMember(methodInfo);
// From assembly.
var assemblyDoc = DocsService.GetXmlFromAssembly(typeof(Stub).Assembly);