In C#, c'è un modo per accedere ai commenti XML (i tag in vs) nel codice sorgente in fase di esecuzione?

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

  •  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?

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top