В C#есть способ получить доступ к комментариям XML (теги в VS) в исходном коде во время выполнения?
-
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);