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
También en la biblioteca
Criptografía en TypeScript: Resumen de la biblioteca crypto-js
Registro en Kotlin: mejores bibliotecas y herramientas para el desarrollo
Migraciones de bases de datos en TypeScript: TypeORM, Prisma y Drizzle
Monitoreo de aplicaciones C++: herramientas y bibliotecas