在 C# (.NET) 中使用 Markdown:库与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 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 ReverseMarkdown


using 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()                    

推荐