构建并运行 AutoGen for .NET 官网:DocFX 文档站点的构建流程与配置详解
【免费下载链接】autogenA programming framework for agentic AI项目地址: https://gitcode.com/GitHub_Trending/au/autogen
本文基于 AutoGen 仓库中dotnet/website/README.md的官方说明展开,介绍如何用 .NET 工具链与 DocFX 在本地构建并运行 AutoGen for .NET 的官方网站。读完之后,你将掌握文档站的两步构建命令(dotnet tool restore与dotnet tool run docfx)背后的完整机制:工具清单如何声明 DocFX 版本、docfx.json如何把 C# 源码元数据与 Markdown 内容分别加工为 API 参考和教程页面,以及站点目录结构、模板与静态资源的组织方式。
前提条件
官方说明(website/README.md)要求本地环境满足:
- dotnet 7.0 或更高版本
构建命令需要能够访问 .NET SDK 以执行dotnet tool系列命令。值得注意的是,仓库根部的 dotnet/global.json 将 SDK 版本进一步约束为9.0.100,并配置了"rollForward": "latestFeature":
{ "sdk": { "version": "9.0.100", "rollForward": "latestFeature" } }这意味着在dotnet/目录内执行任何dotnet命令时,SDK 解析会优先选用不低于 9.0.100 的同大版本最新 feature band,实际效果是比 README 中“7.0 or later”的最低要求更严格。若本地仅有 7.x/8.x SDK 且未安装 9.0,构建会因版本不匹配而失败,这是该站点构建在版本前提上最容易被忽略的坑。
第一步:dotnet tool restore还原本地工具
构建流程的第一步是在仓库的dotnet/目录下执行:
dotnet tool restore该命令并非安装全局包,而是根据仓库内的本地工具清单(tool manifest)还原可执行工具。AutoGen 的工具清单位于 dotnet/.config/dotnet-tools.json:
{ "version": 1, "isRoot": true, "tools": { "dotnet-repl": { "version": "0.1.205", "commands": ["dotnet-repl"], "rollForward": true }, "docfx": { "version": "2.67.5", "commands": ["docfx"], "rollForward": true } } }从该清单可以看出两个关键点:
- DocFX 版本被固定为 2.67.5,并开启
rollForward,即当 NuGet 源上存在更高版本时可向前滚动;构建者不需要手动dotnet tool install docfx,只要执行dotnet tool restore即可在.dotnet/tools缓存中准备好工具。 - 清单中还声明了
dotnet-repl,供仓库中交互式开发工具(如AutoGen.DotnetInteractive相关场景)使用,与网站构建无直接关系,但同属一次 restore 的还原范围。
工具还原后,DocFX 作为“本地工具”只在该目录树内生效,这也是为什么构建命令必须在autogen/dotnet目录下执行——工具清单按目录根(isRoot: true)定位,换个目录dotnet tool run将找不到 docfx 命令。
第二步:dotnet tool run docfx website/docfx.json --serve
工具就绪后,执行官方给出的第二条命令:
dotnet tool run docfx website/docfx.json --serve这条命令做了三件事:
dotnet tool run docfx:以本地工具方式调用还原好的 DocFX 可执行文件(等价于直接调用docfx);website/docfx.json:显式指定站点构建配置文件,DocFX 将按其中的 metadata 与 build 两段流水线执行;--serve:构建完成后启动本地静态服务器持续监听文件变化并重新构建,随后打开浏览器访问http://localhost:8080即可实时预览网站。
配置文件的元数据阶段:从 csproj 生成 API 参考
dotnet/website/docfx.json 的metadata段定义了 API 文档的输入:
"metadata": [ { "src": [ { "files": ["src/**/*.csproj"], "src": "../" } ], "dest": "api", "includePrivateMembers": false, "namespaceLayout": "flattened", "memberLayout": "samePage", "allowCompilationErrors": false, "filter": "filterConfig.yml" } ]逐字段解读:
src为"../",即相对website/目录的父目录——也就是dotnet/源码根;文件过滤式src/**/*.csproj表示扫描该目录下全部项目的工程文件,DocFX 会编译这些程序集以提取公共 API 符号;dest: "api"指定元数据输出到站点的api/目录,对应 toc.yml 中的 “API Reference” 一级入口;namespaceLayout: "flattened"与memberLayout: "samePage"决定页面组织方式:命名空间不生成逐级子目录,类型与其成员同页展示,减少小页面的碎片化;filter: "filterConfig.yml"引用了 dotnet/website/filterConfig.yml,内容为:
apiRules: - exclude: uidRegex: ^AutoGen.SourceGenerator即从 API 参考中排除AutoGen.SourceGenerator命名空间——该工程是 Roslyn 源码生成器(服务于函数调用契约生成),属于构建期工具,不需要出现在面向使用者的 API 文档中。
需要特别留意allowCompilationErrors: false:元数据阶段要求被扫描的 C# 代码能够成功编译,因此运行网站构建的前提是dotnet/下源码处于可编译状态,这解释了为什么仓库构建脚本会把dotnet build与网站文档检查放在同一条流水线上。
配置文件的构建阶段:内容收集、模板与输出
build段定义了站点页面的组成:
- content:收集
api/**.yml(元数据阶段产物)、articles/**.md、tutorial/**.md、release_note/**.md以及顶层*.md(即 index.md)与各自的toc.yml; - resource:复制
images/**作为静态资源; - output:
_site,即构建产物目录; - template:
["default", "modern", "template"]三层模板叠加——前两者是 DocFX 内置主题,第三个template指向仓库内的 dotnet/website/template 自定义模板目录,其中public/main.js提供站点级脚本扩展; - globalMetadata:注入站点级元信息,包括
_appTitle/_appName(“AutoGen for .NET”)、_appLogoPath与_appFaviconPath(指向 images/ag.ico)、页脚_appFooter,以及_gitContribute(指向上游仓库的dotnet分支,用于生成“编辑此页”贡献链接)。
站点内容结构:首页是如何拼出来的
网站首页 dotnet/website/index.md 只有一行:
[!INCLUDE [](https://link.gitcode.com/i/57729c77c4d38c1bcadf3c7dc92b9dfc)]它通过 DocFX 的INCLUDE语法把 dotnet/website/articles/getting-start.md 整篇引入首页。该文章是面向使用者的入门内容:介绍通过dotnet add package AutoGen安装核心包、创建可对话 Agent 的代码片段(引用 dotnet/samples/AgentChat/Autogen.Basic.Sample/CodeSnippet 下的代码片段文件),并链接到教程与示例。
站点导航由 dotnet/website/toc.yml 定义,一级条目包括:
| 导航条目 | 指向 | 内容 |
|---|---|---|
| Docs | articles/ | 功能文章集,如 Agent 概览、群聊、函数调用、中间件、Ollama/Mistral/Gemini/SemanticKernel 等主题 |
| Tutorial | tutorial/ | 交互式教程,如 Chat-with-an-agent.md、带工具的 Agent 创建、图像对话等 |
| API Reference | api/ | 由 metadata 阶段自动生成的 C# API 文档 |
| Release Notes | release_note/ | 各版本发布说明(0.2.2.md 等) |
| Comparison | articles/function-comparison-page-between-python-AutoGen-and-autogen.net.md | Python AutoGen 与 AutoGen.Net 的函数对照 |
| Other Languages | 下拉菜单 | 指向 Python 版文档站 |
从目录结构看,articles/下按提供商分设子目录(AutoGen.Gemini/、AutoGen.Ollama/、AutoGen.SemanticKernel/),主题文件平铺于根层,形成“功能文章 + 分厂商专题”的组织方式;教程与发布说明则是相对独立的轻量文档集。
构建结果与注意事项
- 执行完上述两条命令后,浏览器访问
http://localhost:8080即为--serve模式下的实时站点;不带--serve时产物位于website/_site/,可作为静态站部署。 - 构建入口必须位于
dotnet/目录(对应 README 中 “go to autogen/dotnet folder”),否则dotnet tool无法定位 工具清单,docfx相对配置路径website/docfx.json也会失效。 - 由于元数据阶段要求源码零编译错误且 dotnet/Directory.Build.props 全局启用了
TreatWarningsAsErrors,任何会引入编译警告的代码改动都会连带使网站构建失败——修改dotnet/src下代码时应将网站构建纳入回归验证。 - 网站文档的“编辑此页”贡献链接由
docfx.json的_gitContribute配置生成,指向上游仓库dotnet分支;本地克隆的分支名不同不影响该链接,只影响线上展示。
综上,AutoGen for .NET 网站是一条“本地工具清单 + DocFX 双阶段流水线(源码元数据 → API 参考,Markdown → 教程/文章)+ 三层模板”的标准 DocFX 文档站构建方案,核心命令只有两条,但其配置决定了 API 参考的过滤规则、站点元信息、导航结构与贡献入口,理解 docfx.json 的每个字段是定制此类文档站点的关键。
【免费下载链接】autogenA programming framework for agentic AI项目地址: https://gitcode.com/GitHub_Trending/au/autogen
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考