在 C# (.NET) 中使用 Markdown:最佳库与使用示例
Markdown 是一种轻量级标记语言,允许使用简单符号格式化文本。它广泛用于编写文档、README 文件、博客文章和论坛消息。在 C# (.NET) 生态系统中,有多个强大的库可用于解析、转换和生成 Markdown。本文将介绍主要工具,并展示如何使用它们。
C# 中处理 Markdown 的流行库
.NET 中最常用的解决方案:
- Markdig — 一个现代、快速且完全兼容 CommonMark 规范的库。支持扩展(表格、删除线、表情符号、图表等)。
- MarkdownSharp — 来自 Stack Overflow 的轻量级解析器。简单,但不支持 CommonMark 和许多扩展。
- CommonMark.NET — CommonMark 规范的官方实现。非常适合需要严格兼容性的场景。
在本指南中,我们将重点介绍 Markdig,因为它已成为现代 .NET 项目的事实标准。
安装 Markdig
通过 NuGet 包管理器或 .NET CLI 添加包:
dotnet add package Markdig或通过包管理器控制台:
Install-Package Markdig基本用法:将 Markdown 转换为 HTML
最简单的场景是将 Markdown 字符串转换为 HTML。Markdig 只需一行代码即可完成:
using Markdig;
string markdown = "# 标题 1
这是 **粗体文本** 和 *斜体*。
- 列表项 1- 列表项 2";
string html = Markdown.ToHtml(markdown);
Console.WriteLine(html);结果:
<h1>标题 1</h1><p>这是 <strong>粗体文本</strong> 和 <em>斜体</em>。</p><ul><li>列表项 1</li><li>列表项 2</li></ul>使用 Markdig 扩展
Markdig 支持多种扩展。要使用它们,需要创建一个 pipeline:
using Markdig;using Markdig.Extensions.Tables;
var pipeline = new MarkdownPipelineBuilder() .UseAdvancedExtensions() // 启用所有主要扩展 .Build();
string markdown = "| 标题 1 | 标题 2 ||-------------|-------------|| 单元格 1 | 单元格 2 |";
string html = Markdown.ToHtml(markdown, pipeline);
Console.WriteLine(html);这段代码将生成一个 HTML 表格。可以单独启用扩展:.UseTables()、.UseEmojiAndSmiley()、.UseTaskLists() 等。
将 HTML 转换回 Markdown
反向转换(HTML → Markdown)不在 Markdig 的标准功能中,但可以使用 ReverseMarkdown 库:
dotnet add package ReverseMarkdownusing ReverseMarkdown;
var converter = new Converter();string html = "<h1>你好,世界!</h1><p>这 <strong>很重要</strong></p>";string markdown = converter.Convert(html);
Console.WriteLine(markdown);处理 Markdown 文件
Markdown 通常存储在文件中。读取和转换的示例:
using Markdig;
string filePath = "document.md";string markdownContent = File.ReadAllText(filePath);string htmlContent = Markdown.ToHtml(markdownContent);
File.WriteAllText("output.html", htmlContent);使用自定义 pipeline 创建增强型 HTML
您可以根据特定需求精细调整 pipeline:
var pipeline = new MarkdownPipelineBuilder()