Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O objetivo final dos documentos da API do .NET é fazer com que os /// comentários XML no código-fonte do .NET sejam a "fonte da verdade". Para MSBuild, ASP.NET Core e EF Core, essa meta foi atendida. No entanto, atualmente, o repositório dotnet-api-docs continua sendo a fonte da verdade para alguns namespaces na referência da API do .NET.
Esse problema de dotnet/runtime acompanha o esforço para retroportar documentos do .NET e tornar o repositório do dotnet/runtime a fonte de verdade. A presença ou ausência do botão "editar" em uma página geralmente indica que o dotnet-api-docs repositório é a fonte da verdade. Se estiver faltando, a fonte da verdade provavelmente será os /// comentários no repositório de origem.
Este artigo fornece dicas sobre como escrever bons comentários de documento dentro do próprio código-fonte.
Comentários bem feitos resultam em bons documentos
Os comentários de barra tripla da API do .NET são transformados em documentação pública no site learn.microsoft.com e também aparecem no IntelliSense no IDE. Os comentários devem ser:
- Completo – entradas de documento vazias para métodos, parâmetros, exceções e assim por diante, fazem com que as APIs se sintam sub-compatíveis, temporárias ou triviais.
- Correto: os leitores verificam detalhes críticos e ficam frustrados quando as informações principais estão ausentes ou incorretas.
- Contextual — os leitores entram nessa página na pesquisa e precisam saber como e quando usar a API e quais são as implicações do código.
- Polido – gramática e ortografia pobres ou precipitadas podem confundir o leitor e tornar até mesmo instruções simples ambíguas; além disso, a apresentação ruim sugere baixo investimento.
Práticas recomendadas
Use
crefem vez dehrefpara vincular a outro tipo ou método.Correto:
<param name="configFile">An <see cref="XmlConfigResource" /> object.</param>Incorreto:
<param name="configFile">An <a href="https://learn.Microsoft.com/{path}/XmlConfigResource"></a> object.</param>Ao referenciar parâmetros, encapsule o nome do parâmetro em uma
<paramref>marca, por exemplo,The offset in <paramref name="source" /> where the range begins..Se você tiver mais de um parágrafo no comentário do documento, separe os parágrafos com
<para>marcas.Encapsular exemplos de código em
<code>marcas dentro<example>de marcas.Use
<seealso>para adicionar links a outras APIs na seção "Ver Também" gerada automaticamente.
Marcas de documento XML
| Etiqueta | Propósito | Exemplo |
|---|---|---|
<altmember> |
Adiciona um link "Veja também" à API especificada. | <altmember cref="System.Console.Out" /> |
<c> |
Formata o texto especificado como código dentro de uma descrição. | Gets the current version of the language compiler, in the form <c>Major.Minor.Revision.Build</c>. |
<code> |
Formata várias linhas como código. | <code language="csharp">using(logger.BeginScope("Processing request from {Address}", address)) { }</code> |
<example> |
Adiciona um exemplo de código no título "Exemplo" H2. | <example><code language="csharp">using(logger.BeginScope("Processing request from {Address}", address)) { }</code></example> |
<exception> |
Descreve uma exceção que a API pode gerar. | <exception cref="T:System.ArgumentException">No application identity is specified in <paramref name="identity" />.</exception> |
<include> |
Consulte comentários em outro arquivo que descreva as APIs em seu código-fonte. | <include file="../docs/AbsoluteLayout.xml" path="Type[@FullName='Microsoft.Maui.Controls.AbsoluteLayout']/Docs/*" />Exemplo de MAUI do .NET |
<inheritdoc> |
Herda comentários XML de classes base, interfaces e métodos semelhantes. | <inheritdoc /> |
<list> |
Cria uma lista numerada ou com marcadores. | <list type="bullet"><item><description>Set the root path to the result.</description></item><item><description>Load host configuration.</description></item></list> |
<para> |
Separa parágrafos. | |
<paramref> |
Refere-se a um parâmetro de método. | Returns the activity with the specified <paramref name="id" />. |
<related> |
Adiciona um link "Veja também" ao artigo especificado. | <related type="Article" href="/dotnet/framework/ado-net-overview">ADO.NET overview</related> |
<see cref> |
Links para outra API. | Describes the behavior that caused a <see cref="Scroll" /> event. |
<see langword> |
Formata o texto especificado como código. | Gets the value of the <see langword="Accept-Ranges" /> header for an HTTP response. |
<seealso> |
Adiciona um link "Veja também" à API especificada. | <seealso cref="T:System.Single" /> |
<typeparamref> |
Refere-se a um parâmetro de tipo. | The <typeparamref name="THandler" /> is resolved from a scoped service provider. |
Para obter mais informações, consulte as marcas XML recomendadas para C# e a especificação C#. A especificação ECMAXML também possui boas informações, embora seja importante estar ciente de que há algumas diferenças entre os comentários de documentação /// e ECMAXML (por exemplo, os alvos cref são totalmente expandidos e possuem prefixos no ECMAXML).
Referências cruzadas
Quando você usa uma <see cref> marca para vincular a outra API, não é necessário adicionar um prefixo ao nome do tipo, como T: para o tipo ou M: para o método. Na verdade, a regra de análise de código CA1200 sinaliza comentários de código que adicionam um prefixo ao nome do tipo em uma marca cref. No entanto, há algumas exceções a esta regra:
- Quando você deseja vincular à forma geral de um método que tem mais de uma sobrecarga, o compilador C# atualmente não dá suporte a isso. A solução alternativa para documentos é prefixar o nome
O:do método no código-fonte (ouOverload:em ECMAXML) e suprimir a regra CA1200. Por exemplo:<altmember cref="O:System.Diagnostics.Process.Kill" />. - Quando a API não pode ser resolvida a partir do contexto atual, que inclui quaisquer
usingdiretivas. Nesse caso, use o nome da API totalmente qualificado com um prefixo.
Quando a <see cref> marca é convertida em ECMAXML, o mdoc substitui o nome do tipo pelo DocId completo da API, que inclui um prefixo.
Descrições
Para obter diretrizes autoritativas sobre como descrever cada tipo de símbolo e suas várias partes, consulte o wiki de documentos da API do .NET.
Comentários vazios
O texto de espaço reservado conhecido para comentários vazios é To be added.. O sistema de build do Learn reconhece esse texto e o remove quando o ECMAXML é convertido em HTML, deixando uma descrição vazia.
Arquivos de código separados
Se o exemplo de código for longo, você poderá colocá-lo em um arquivo separado no repositório de documentos e vinculá-lo a ele do código-fonte da seguinte maneira:
/// <example>
/// <format type="text/markdown">
/// <]
/// ]]></format>
/// </example>
Para obter mais detalhes sobre como conectar arquivos de código separados, consulte esta discussão.
Atributos de linguagem
Atributos de linguagem em <code> marcas são opcionais, mas fazem com que o código seja formatado com codificação de cores. Por exemplo:
/// <example>
/// This sample shows the basic pattern for defining a typed client class.
/// <code language="csharp">
/// class ExampleClient
/// {
/// private readonly HttpClient _httpClient;
/// private readonly ILogger _logger;
///
/// // Typed clients can use constructor injection to access additional services.
/// public ExampleClient(HttpClient httpClient, ILogger<ExampleClient> logger)
/// {
/// _httpClient = httpClient;
/// _logger = logger;
/// }
/// }
/// </code>
/// </example>
APIs internas
Ao documentar uma API que não se destina a ser usada pelos consumidores, use texto semelhante ao seguinte:
<summary>This type supports the .NET infrastructure and is not intended to be used directly from your code.</summary>