Em C #, existe uma maneira de acessar comentários xml (as tags no VS) no código-fonte em tempo de execução?

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

  •  27-10-2019
  •  | 
  •  

Pergunta

No Visual Studio, comentários xml podem ser adicionados a métodos / classes para fornecer documentação. Consulte http://msdn.microsoft.com/en-us/magazine/cc302121.aspx .

O Visual Studio gera arquivos a partir desses comentários xml e os exporta, para que sejam acessíveis com certeza.

Minha pergunta é: existe algum tipo de classe que permite ao programa acessar o texto xml em tempo de execução?(Acho que a forma de força bruta é analisar os arquivos exportados, mas essa não é uma solução legal)

O motivo pelo qual quero fazer isso é porque estou criando uma espécie de programa auxiliar para um programa maior, então quero enviar os comentários xml para a tela.Eu tenho o nome da propriedade por meio de reflexão, então há uma maneira de alimentar o nome de volta para alguma classe e obter a documentação xml?

Já tentei pesquisar, mas não consegui encontrar nada.Eu posso estar formulando mal.Isso é possível?

Foi útil?

Solução

Até onde eu sei, os comentários XML não são salvos como metadados no arquivo binário do assembly (.exe ou .dll).Portanto, a única opção é analisar diretamente o arquivo XML gerado pelo Visual Studio.

Outras dicas

Comentários XML são retirados do executável - é por isso que há um sinalizador de compilador especial para gerar a documentação XML deles, para que não se percam.

Existem ferramentas que ajudam a gerar ajuda em HTML e outros formatos a partir desses arquivos XML.

Experimente 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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top