2006年,一个叫做NDoc的工具走进了大家的视野。这个工具想要把JavaDoc的功能带给.NET平台,开发者们用它把C#编译器生成的XML注释变成专业的参考文档,还支持输出多种格式。但随着.NET Framework 2.0的发布,NDoc遇到了难题,特别是泛型的支持跟不上微软的变化。因为微软的工具和框架不开源,NDoc的开发进度受到了影响,最终项目停了下来。不过NDoc的理念一直被社区记住,大家一直在尝试复兴它。 2006年以后,微软推出了Sandcastle来做MSDN的文档。这个工具功能强大,能理解泛型还支持多种格式。但它一开始没有开源,让社区对它不信任。后来微软把源码公开了,但之前的混乱还是让一些人望而却步。虽然Sandcastle设计很好,内存消耗高还有点复杂让很多人不敢用。 接下来就是DocFX了。微软推出.NET Core时也搞出了DocFX,支持Markdown输入还能快速集成到CI/CD管道里。不过有些维护者觉得它简陋没有好看的界面和主题。 最近我发现了Lunet这个开源工具。它是专门用来做API参考文档生成的。Lunet在API提取方面做得不错,但定制化方面就有点差强人意了。这让我想起十年前想过的问题:能不能把.NET API文档生成和Sphinx内容管理系统结合在一起呢? Sphinx是个很受欢迎的Python社区用的工具,主题丰富且集成能力强。我现在的目标是打造一个便捷的命令行工具,把.NET API元数据转化成Sphinx兼容的输出。这样就能利用Sphinx强大的生态和主题给大家提供更好的体验。 我写了新书《.NET传奇(第二部)》,会更深入探讨这些话题。不管过去有多少波折,正是这些经历才塑造了现在的.NET生态。未来我还要继续探索如何把这些工具整合起来,给开发者提供更高效灵活的解决方案。