Gibt es in C#eine Möglichkeit, auf XML -Kommentare (die Tags in VS) im Quellcode zur Laufzeit zuzugreifen?

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

  •  27-10-2019
  •  | 
  •  

Frage

In Visual Studio können XML -Kommentare zu Methoden/Klassen hinzugefügt werden, um eine Dokumentation bereitzustellen. Sehen http://msdn.microsoft.com/en-us/magazine/cc302121.aspx.

Visual Studio generiert Dateien aus diesen XML -Kommentaren und exportiert sie, sodass sie mit Sicherheit zugänglich sind.

Meine Frage ist, gibt es eine Art Klasse, die das Programm zur Laufzeit auf den XML -Text zugreifen lassen? (Ich denke, die Brute Force besteht darin, die exportierten Dateien zu analysieren, aber das ist keine nette Lösung)

Der Grund, warum ich dies tun möchte, ist, dass ich eine Art Helferprogramm für ein größeres Programm erstelle, also möchte ich die XML -Kommentare auf den Bildschirm ausgeben. Ich habe den Eigenschaftsnamen durch Reflexion. Gibt es also eine Möglichkeit, den Namen wieder in eine Klasse zu füttern und die XML -Dokumentation zu erhalten?

Ich habe bereits versucht, zu suchen, aber ich konnte nichts finden. Ich könnte es schlecht schreiben. Ist das möglich?

War es hilfreich?

Lösung

Soweit ich jetzt sind die XML -Kommentare in der Binärdatei der Montage (.exe oder .dll) nicht als Metadaten gespeichert. Die einzige Option besteht also darin, die von Visual Studio generierte XML -Datei direkt zu analysieren.

Andere Tipps

XML -Kommentare werden aus der ausführbaren Datei entzogen - deshalb gibt es ein spezielles Compiler -Flag, um die XML -Dokumentation von ihnen zu generieren, damit sie nicht verloren gehen.

Es gibt Tools, mit denen Sie HTML -Hilfe und andere Formate aus diesen XML -Dateien generieren können.

Versuchen 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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top