Procesamiento de Markdown en C# (.NET): bibliotecas y herramientas

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con Markdown en C# (.NET): revisión de bibliotecas y herramientas

Markdown es un lenguaje de marcado ligero ampliamente utilizado para formatear texto en documentación, archivos README, blogs y chats. En el ecosistema de C# (.NET) existen varias bibliotecas potentes que permiten analizar, procesar y convertir Markdown a HTML y otros formatos. En este artículo, exploraremos las herramientas más populares, sus capacidades y ejemplos de uso.

¿Por qué procesar Markdown en C#?

Las aplicaciones web modernas, los sistemas de gestión de contenido (CMS) y los editores de código utilizan cada vez más Markdown como formato de entrada principal. En C# (.NET), esto puede ser útil para:

  • Generación de contenido estático (documentación, blogs)
  • Implementación de editores WYSIWYG con soporte para Markdown
  • Importación/exportación de datos desde sistemas externos (GitHub, Reddit, Stack Overflow)
  • Conversión de Markdown a PDF, DOCX o LaTeX a través de HTML intermedio

Bibliotecas principales para C# (.NET)

1. Markdig

Markdig es la biblioteca más popular y de alto rendimiento para trabajar con Markdown en .NET. Soporta CommonMark, GFM (GitHub Flavored Markdown) y múltiples extensiones: tablas, listas de tareas, autoenlace de URLs, fórmulas matemáticas (a través de MathJax) y mucho más.

Instalación:

// A través del Administrador de Paquetes NuGet
Install-Package Markdig

// O mediante .NET CLI
dotnet add package Markdig

Ejemplo de uso:

using Markdig;

string markdown = @"
# Encabezado de primer nivel

**Texto en negrita** y *cursiva*.

- Elemento de lista 1
- Elemento de lista 2

> Cita

```csharp
Console.WriteLine(""¡Hola, Mundo!"");
```";

// Conversión a HTML con extensiones GFM
string html = Markdown.ToHtml(markdown);

Console.WriteLine(html);

Funcionalidades avanzadas:

// Configuración del pipeline con extensiones adicionales
var pipeline = new MarkdownPipelineBuilder()
    .UseAdvancedExtensions() // Incluye todas las extensiones populares
    .UseMathematics()        // Soporte para fórmulas LaTeX
    .UseEmojiAndSmiley()     // Emojis :smile:
    .Build();

string htmlWithExtensions = Markdown.ToHtml(markdown, pipeline);

2. CommonMark.NET

CommonMark.NET es una implementación estricta de la especificación CommonMark (el estándar de Markdown). La biblioteca es ligera, no tiene dependencias y es ideal para proyectos donde la compatibilidad con la implementación de referencia es crucial.

Instalación:

Install-Package CommonMark.NET

Ejemplo de uso:

using CommonMark;

string markdown = "¡Hola, **mundo**!";
string html = CommonMarkConverter.Convert(markdown);

// Resultado: <p>¡Hola, <strong>mundo</strong>!</p>

3. MarkdownSharp

MarkdownSharp es un puerto del procesador original de Markdown a C# creado por Jeff Atwood (cofundador de Stack Overflow). La biblioteca está desactualizada, pero aún se usa en proyectos antiguos. Solo admite sintaxis básica sin extensiones.

Install-Package MarkdownSharp
using MarkdownSharp;

var markdown = new Markdown();
string html = markdown.Transform("**Hola**");

Herramientas adicionales

4. HtmlSanitizer (para salida segura)

Al convertir Markdown a HTML y mostrarlo en una página web, es importante limpiar el resultado de etiquetas potencialmente peligrosas (ataques XSS). Usa la biblioteca HtmlSanitizer:

Install-Package HtmlSanitizer

using Ganss.XSS;

var sanitizer = new HtmlSanitizer();
string rawHtml = Markdown.ToHtml("<script>alert('xss')</script>");
string safeHtml = sanitizer.Sanitize(rawHtml);

5. ReverseMarkdown (HTML → Markdown)

Si necesitas

Recommendations