SourceBrowser:基于 Roslyn 的源代码浏览网站生成项目

Source browser website generator that powers https://source.dot.net, https://referencesource.microsoft.com and https://sourceroslyn.io

分支9Tags1

源码浏览器

NuGet 包

一个源码浏览网站生成器,支持 https://referencesource.microsoft.com、http://sourceroslyn.io、https://source.dot.net 等网站。

创建并托管您自己的静态HTML网站来浏览C#、VB、MSBuild和TypeScript源代码。注意,它需要一个ASP.NET Core网站来进行托管(符号索引服务器端保存),因此没有ASP.NET Core时,搜索功能无法工作。(参见架构说明)

当然,源码浏览器允许您浏览其自身的源代码: http://sourcebrowser.azurewebsites.net

现在也已在NuGet上提供: https://www.nuget.org/packages/SourceBrowser

构建指南(需Visual Studio 2019):

  1. 使用git克隆https://github.com/KirillOsenkov/SourceBrowser
  2. 进入SourceBrowser目录
  3. 执行Build.cmd

生成并运行测试网站步骤:

  1. 执行GenerateTestSite.cmd
  2. 执行RunTestSite.cmd

在Visual Studio 2019中操作:

  1. 打开SourceBrowser.sln
  2. 将HtmlGenerator项目设为启动项目,并按F5。预配置为为TestCode\TestSolution.sln生成网站。
  3. 可传递.sln文件或.csproj文件路径(或用空格分隔的多个路径)以为其创建索引。
  4. 使用/out:<路径>向HtmlGenerator.exe指定生成网站的目标位置。这个路径在第6步中作为“物理路径”使用。
  5. 使用/in:<路径>传递包含要加入索引的项目和解决方案完整路径列表的文件。
  6. 若想保留相对的.sln文件夹而不是合并所有解决方案,可使用/root:<路径>。此文件夹必须包含所有指定的.sln或.csproj路径。
  7. 将SourceIndexServer项目设为启动并运行调试网站。

注意:构建源码浏览器需要Visual Studio 2019。

概念设计

在索引生成时,通过Roslyn分析C#和VB源代码,并在输出目录生成大量静态的超链接HTML文件。不存在数据库。网站主要是静态HTML,在索引时间就预先计算好所有的链接、源代码着色等信息。所有超链接都是直接链接,绕过服务器。

仅有的服务器端组件是接收搜索查询的服务,根据查询返回匹配的类型和成员列表,这些是链接到静态HTML的超链接。服务在内存中维护所有声明的类型和成员列表,该列表同样是在索引时预先计算的。所有服务,如“查找所有引用”、“项目资源管理器”等都预先渲染完成。

生成器不支持增量更新,每次生成必须从空白文件夹开始,并原子性地替换当前部署的文件夹(例如使用Azure部署、robocopy /MIR到inetpub\wwwroot等)。对于较小的项目,使用Dropbox或Git部署到Azure也是可行的。

限制和已知问题

  1. 目前不支持索引具有相同程序集名称的多个项目。仅处理第一个项目。这源于只通过短名称引用程序集的基本设计决策。定制者应在他们的分支中添加过滤机制,以挑选最佳单个项目用于索引。
  2. 生成的网站必须托管在域名的根目录下。使其在子目录中运行较为复杂,且不太可能得到支持。

功能特性

  • 解决方案资源管理器——将项目的 contents 合并成左侧的单一树状视图
  • 对C#、VB、MSBuild、XAML和TypeScript的颜色高亮支持
  • 转至定义(点击引用)
  • 查找所有引用(点击定义)
  • 项目浏览器——在任何文档中点击底部的“项目”链接
  • 命名空间探索器——查看项目的类型和成员,嵌套于命名空间层级中
  • 文档大纲——点击右上角按钮显示当前文件中的类型和成员
  • [http:///i.txt] 显示整个解决方案的源代码统计信息,以及/AssemblyName/i.txt(针对程序集)展示特定程序集的源代码统计
  • [http:///#EmptyArrayAllocation] 查找所有空数组分配(这是一个硬编码的特例,不可扩展)
  • 单击“部分”关键字将显示此类或结构声明的所有文件列表
  • MSBuild文件(.csproj等)具备超链接
  • 如果TypeScript文件(*.ts)属于C#项目,则会被索引。正在进行工作以支持任意数组的TypeScript文件。
  • 支持在C#/VB字符串字面量中搜索GUID

项目状态与贡献

这是展示概念和技术(如Roslyn使用)的参考实现。不提供任何保证,使用风险自负。我们考虑接受高质量的拉取请求,只要它们能增加显著价值。但目前没有计划对应用本身做重大开发。任何重大的架构重构、添加大型功能、大规模重构都将因资源限制而不予接受。欢迎自动生成网站用于您的代码、集成到CI服务器等。在您的个人fork中,您可以自由发挥。我们非常乐意收到bug报告。

有任何问题,欢迎联系Twitter上的@KirillOsenkov。感谢@v2_matveev贡献TypeScript支持!同时也感谢众多其他贡献者提供的各种修复和贡献!

项目介绍

源代码浏览器网站生成器,为 http://referencesource.microsoft.com 和 http://sourceroslyn.io 提供支持。【此简介由AI生成】

定制我的领域
441.16 K204访问 GitHub