Trabajo con Markdown en C# (.NET): mejores bibliotecas y ejemplos de uso
Markdown es un lenguaje de marcado ligero que permite formatear texto con símbolos simples. Se utiliza ampliamente para escribir documentación, archivos README, publicaciones en blogs y mensajes en foros. En el ecosistema de C# (.NET) existen varias bibliotecas potentes para analizar, convertir y generar Markdown. En este artículo revisaremos las herramientas principales y mostraremos cómo trabajar con ellas.
Bibliotecas populares para trabajar con Markdown en C#
Las soluciones más demandadas en .NET:
- Markdig — biblioteca moderna, rápida y totalmente compatible con la especificación CommonMark. Soporta extensiones (tablas, tachado, emoji, diagramas, etc.).
- MarkdownSharp — analizador ligero de Stack Overflow. Simple, pero no soporta CommonMark ni muchas extensiones.
- CommonMark.NET — implementación oficial de la especificación CommonMark. Ideal para una compatibilidad estricta.
En esta guía nos centraremos en Markdig, ya que es el estándar de facto para proyectos .NET modernos.
Instalación de Markdig
Agregue el paquete a través de NuGet Package Manager o .NET CLI:
dotnet add package MarkdigO a través de Package Manager Console:
Install-Package MarkdigUso básico: conversión de Markdown a HTML
El escenario más simple es convertir una cadena Markdown a HTML. Markdig lo hace en una línea:
using Markdig;
string markdown = "# Título 1
Este es **texto en negrita** y *cursiva*.
- Elemento de lista 1- Elemento de lista 2";
string html = Markdown.ToHtml(markdown);
Console.WriteLine(html);Resultado:
<h1>Título 1</h1><p>Este es <strong>texto en negrita</strong> y <em>cursiva</em>.</p><ul><li>Elemento de lista 1</li><li>Elemento de lista 2</li></ul>Trabajo con extensiones de Markdig
Markdig soporta múltiples extensiones. Para usarlas, debe crear un pipeline:
using Markdig;using Markdig.Extensions.Tables;
var pipeline = new MarkdownPipelineBuilder() .UseAdvancedExtensions() // incluye todas las extensiones principales .Build();
string markdown = "| Título 1 | Título 2 ||----------|----------|| Celda 1 | Celda 2 |";
string html = Markdown.ToHtml(markdown, pipeline);
Console.WriteLine(html);Este código generará una tabla HTML. Se pueden conectar extensiones individuales: .UseTables(), .UseEmojiAndSmiley(), .UseTaskLists() y otras.
Conversión de HTML de vuelta a Markdown
La conversión inversa (HTML → Markdown) no está incluida en la distribución estándar de Markdig, pero se puede usar la biblioteca ReverseMarkdown:
dotnet add package ReverseMarkdownusing ReverseMarkdown;
var converter = new Converter();string html = "<h1>¡Hola, mundo!</h1><p>Esto es <strong>importante</strong></p>";string markdown = converter.Convert(html);
Console.WriteLine(markdown);Trabajo con archivos Markdown
A menudo Markdown se almacena en archivos. Ejemplo de lectura y conversión:
using Markdig;
string filePath = "documento.md";string markdownContent = File.ReadAllText(filePath);string htmlContent = Markdown.ToHtml(markdownContent);
File.WriteAllText("salida.html", htmlContent);Creación de HTML extendido con pipeline personalizado
Puede ajustar finamente el pipeline para tareas específicas:
var pipeline = new MarkdownPipelineBuilder() También en la biblioteca
Trabajo con archivos ZIP en C++: bibliotecas y ejemplos de código
Biblioteca GraphQL para Go (Golang) — guía completa
sqlc para Go: guía completa con ejemplos prácticos