In C#, c'è un modo per accedere ai commenti XML (i tag in vs) nel codice sorgente in fase di esecuzione?
-
27-10-2019 - |
Domanda
In Visual Studio, i commenti XML possono essere aggiunti a metodi/classi per fornire documentazione. Vedere http://msdn.microsoft.com/en-us/magazine/cc302121.aspx.
Visual Studio genera file da questi commenti XML e li esporta, quindi sono sicuramente accessibili.
La mia domanda è: esiste una classe di qualche tipo che consente al programma di accedere al testo XML in fase di esecuzione? (Penso che il modo di Brute Force sia quello di analizzare i file esportati, ma non è una soluzione ordinata)
Il motivo per cui voglio farlo è perché sto realizzando una sorta di programma di supporto per un programma più ampio, quindi voglio produrre i commenti XML sullo schermo. Ho il nome di proprietà attraverso la riflessione, quindi c'è un modo per alimentare il nome in una classe e ottenere la documentazione XML?
Ho già provato a cercare, ma non riuscivo a trovare nulla. Potrei averlo chiarito male. È possibile?
Soluzione
Per quanto io ora, i commenti XML non vengono salvati come metadati nel file binario dell'Assemblea (.exe o .dll). Quindi l'unica opzione è quella di analizzare direttamente il file XML generato da Visual Studio.
Altri suggerimenti
I commenti XML vengono rimossi dall'eseguibile: ecco perché esiste un flag di compilatore speciale per generare la documentazione XML da loro, quindi non si perdono.
Esistono strumenti che ti aiutano a generare aiuto HTML e altri formati da questi file XML.
Provare Docsbyreflection.
// 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);