В C#есть способ получить доступ к комментариям XML (теги в VS) в исходном коде во время выполнения?

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

  •  27-10-2019
  •  | 
  •  

Вопрос

В Visual Studio комментарии XML могут быть добавлены в методы/классы для предоставления документации. Видеть http://msdn.microsoft.com/en-us/magazine/cc302121.aspx.

Visual Studio генерирует файлы из этих комментариев XML и экспортирует их, поэтому они наверняка доступны.

У меня вопрос, есть ли какой -то класс, который позволяет программе получить доступ к тексту XML во время выполнения? (Я думаю, что грубая сила - проанализировать экспортируемые файлы, но это не аккуратное решение)

Причина, по которой я хочу это сделать, заключается в том, что я создаю своего рода вспомогательную программу для более крупной программы, поэтому я хочу вывести комментарии XML на экран. У меня есть имя свойства через отражение, так что есть ли способ вернуть имя обратно в какой -то класс и получить документацию XML?

Я уже пытался искать, но я ничего не мог найти. Я мог бы сильно формулировать. Это возможно?

Это было полезно?

Решение

Насколько я сейчас, комментарии XML не сохраняются в виде метаданных в двоичном файле Ассамблеи (.exe или .dll). Таким образом, единственным вариантом является непосредственно анализировать файл XML, сгенерированный Visual Studio.

Другие советы

Комментарии XML выливаются из исполняемого файла - поэтому есть специальный флаг компилятора, чтобы генерировать от них документацию XML, чтобы они не терялись.

Существуют инструменты, которые помогут вам генерировать помощь HTML и другие форматы из этих файлов XML.

Пытаться 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top