Processamento de Markdown em C# (.NET): bibliotecas e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com Markdown em C# (.NET): visão geral de bibliotecas e ferramentas

\n\n

Markdown é uma linguagem de marcação leve, amplamente utilizada para formatar texto em documentações, arquivos README, blogs e chats. No ecossistema C# (.NET), existem várias bibliotecas poderosas que permitem fazer parsing, processar e converter Markdown para HTML e outros formatos. Neste artigo, veremos as ferramentas mais populares, seus recursos e exemplos de uso.

\n\n

Por que processar Markdown em C#?

\n\n

Aplicações web modernas, sistemas de gerenciamento de conteúdo (CMS) e editores de código estão cada vez mais usando Markdown como formato principal de entrada. Em C# (.NET), isso pode ser útil para:

\n
    \n
  • Geração de conteúdo estático (documentação, blogs)
  • \n
  • Implementação de editores WYSIWYG com suporte a Markdown
  • \n
  • Importação/exportação de dados de sistemas externos (GitHub, Reddit, Stack Overflow)
  • \n
  • Conversão de Markdown para PDF, DOCX ou LaTeX através de HTML intermediário
  • \n
\n\n

Principais bibliotecas para C# (.NET)

\n\n

1. Markdig

\n

Markdig é a biblioteca mais popular e performática para trabalhar com Markdown em .NET. Ela suporta CommonMark, GFM (GitHub Flavored Markdown) e várias extensões: tabelas, listas de tarefas, substituição automática de links, fórmulas matemáticas (via MathJax) e muito mais.

\n\n

Instalação:

\n
// Via NuGet Package Manager\nInstall-Package Markdig\n\n// Ou via .NET CLI\ndotnet add package Markdig
\n\n

Exemplo de uso:

\n
using Markdig;\n\nstring markdown = @"\n# Título de primeiro nível\n\n**Texto em negrito** e *itálico*.\n\n- Item de lista 1\n- Item de lista 2\n\n> Citação\n\n```csharp\nConsole.WriteLine(""Hello, World!"");\n```";\n\n// Conversão para HTML com extensões GFM\nstring html = Markdown.ToHtml(markdown);\n\nConsole.WriteLine(html);\n
\n\n

Recursos avançados:

\n
// Configuração do pipeline com extensões adicionais\nvar pipeline = new MarkdownPipelineBuilder()\n    .UseAdvancedExtensions() // Ativa todas as extensões populares\n    .UseMathematics()        // Suporte a fórmulas LaTeX\n    .UseEmojiAndSmiley()     // Emojis :smile:\n    .Build();\n\nstring htmlWithExtensions = Markdown.ToHtml(markdown, pipeline);\n
\n\n

2. CommonMark.NET

\n

CommonMark.NET é uma implementação rigorosa da especificação CommonMark (padrão Markdown). A biblioteca é leve, não possui dependências e é ideal para projetos onde a compatibilidade com a implementação de referência é importante.

\n\n

Instalação:

\n
Install-Package CommonMark.NET
\n\n

Exemplo de uso:

\n
using CommonMark;\n\nstring markdown = "Olá, **mundo**!";\nstring html = CommonMarkConverter.Convert(markdown);\n\n// Resultado: <p>Olá, <strong>mundo</strong>!</p>\n
\n\n

3. MarkdownSharp

\n

MarkdownSharp é um port do processador Markdown original para C# por Jeff Atwood (cofundador do Stack Overflow). A biblioteca está desatualizada, mas ainda é usada em projetos antigos. Suporta apenas a sintaxe básica, sem extensões.

\n\n
Install-Package MarkdownSharp
\n\n
using MarkdownSharp;\n\nvar markdown = new Markdown();\nstring html = markdown.Transform("**Olá**");\n
\n\n

Ferramentas adicionais

\n\n

4. HtmlSanitizer (para saída segura)

\n

Ao converter Markdown para HTML e exibir o resultado em uma página web, é importante limpar o resultado de tags potencialmente perigosas (ataques XSS). Use a biblioteca HtmlSanitizer:

\n\n
Install-Package HtmlSanitizer\n\nusing Ganss.XSS;\n\nvar sanitizer = new HtmlSanitizer();\nstring rawHtml = Markdown.ToHtml("<script>alert('xss')</script>");\nstring safeHtml = sanit                    

Recommendations