En C#, ¿hay alguna forma de acceder a los comentarios XML (las etiquetas en VS) en el código fuente en tiempo de ejecución?

StackOverflow https://stackoverflow.com/questions/6334406

  •  27-10-2019
  •  | 
  •  

Pregunta

En Visual Studio, se pueden agregar comentarios de XML a los métodos/clases para proporcionar documentación. Ver http://msdn.microsoft.com/en-us/magazine/cc302121.aspx.

Visual Studio genera archivos de estos comentarios XML y los exporta, por lo que se pueden acceder con seguridad.

Mi pregunta es, ¿hay una clase de algún tipo que permita que el programa acceda al texto XML en tiempo de ejecución? (Creo que la forma de la fuerza bruta es analizar los archivos exportados, pero esa no es una solución ordenada)

La razón por la que quiero hacer esto es porque estoy haciendo una especie de programa auxiliar para un programa más grande, por lo que quiero generar los comentarios XML a la pantalla. Tengo el nombre de la propiedad a través de la reflexión, entonces, ¿hay alguna manera de volver a alimentar el nombre a alguna clase y obtener la documentación XML?

Ya intenté buscar, pero no pude encontrar nada. Podría estar escribiendo mal. es posible?

¿Fue útil?

Solución

Hasta donde yo ahora, los comentarios XML no se guardan como metadatos en el archivo binario de ensamblaje (.exe o .dll). Entonces, la única opción es analizar directamente el archivo XML generado por Visual Studio.

Otros consejos

Los comentarios de XML se eliminan del ejecutable: por eso hay una bandera de compilador especial para generar la documentación XML de ellos, para que no se pierdan.

Hay herramientas que lo ayudan a generar ayuda HTML y otros formatos de estos archivos XML.

Probar Docsbyreflección.

// 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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top