首页 > 编程语言 >SourceBrowser 的源码流程(待继续细化)

SourceBrowser 的源码流程(待继续细化)

时间:2023-12-19 22:36:13浏览次数:38  
标签:文件 读取 细化 获取 html cs 源码 SourceBrowser 链接

先读取 sln 项目里的文件,csorpj,在读取cs等文件,创建输出文件夹

会生成一个类似集合对象,里面有你的代码文件,然后遍历集合,找出代码文件

如 xx.cs文件,然后读取 cs 文件里的代码  ,还有一些roslyn  读取 语法根,获取语义模型异步,获取文档范围 rangs
部分该不太确定具体意义

根据 cs文件名称创建 html文件,
然后通过 StreamWriter( html文件地址) 写入数据待文件

然后读取rangs  中的 text, 理解文本所在的位置,读取这个位置的文本[0-20]  为 // <auto-generated/>
有实现则会生成链接连接到实现处,没有则展示

检查这个文本有没有实现
1 有实现(例如 A a=new() 自定义对象)
会先获取 当前 rangs 里 获取 token,然后 rang,token  去获取 GetSymbol  获取 符号们就是有没有实现(此处系统的如system.write() 等 要有 网上的程序集集合才能获取到)
    
然后 判断 程序集 ISymbol 的种类

var typeSymbol = symbol as ITypeSymbol;
            string symbolId = SymbolIdService.GetId(symbol);
            var location = symbol.Locations[0];
            string destinationAssemblyName = null;
            if (location.IsInSource)
            {
                //生成有元数据的链接
                result = GenerateHyperlink(symbol, symbolId, location.SourceTree, out destinationAssemblyName);
            }

然后 生成链接
链接主要有  程序cs名称,加上 ISymbol   生成的 的id (由程序名称的 MD5 获取 hash 在转化字符 )
链接例子:  A.cs.html#666fbff426dc92fc
        return new HtmlElementInfo
        {
            Name = "a",
            Attributes =
                {
                    { "href", href },
                }
        };


2 没实现  (public class a)
则通过 stringbuild  拼接文本  生成html代码

<span class="comment">// <auto-generated/></span>

然后写入









在读取 项目里的所有cs文件并创建对应html,

遍历读取cs文件,有些类,方法 有实现的添加链接并写入

  

标签:文件,读取,细化,获取,html,cs,源码,SourceBrowser,链接
From: https://www.cnblogs.com/liujian1368928/p/17914983.html

相关文章

  • SSO单点登录源码解析
    单点登录:用户在单点登录成功后,会访问某一平台模块,1. 向客户端发送一个请求(免密登录接口),请求客户端接口会携带一个ticket,类似于:http//:ip:port:xxx?ticket=xxxx1. 这个请求会被客户端配置的EKPSSOCLIENT的过滤器拦截,读取配置文件sso-config.properties,获取过滤器链(CASURLFilter、Us......
  • 任务调度处理系列之 Spring源码分析-【SchedulingConfigurer实现原理】转
     一、可能的场景在做业务平台的时候我们经常会遇到,某些跟时间打交道的需要修改状态,比如说在时间区间之前,属于未生效状态,区间之内属于有效期,区间之后,属于过期,或者需要每天每周每月,甚至是年为单位的做一些固定的操作。通过定时任务可以通过开启定时任务来完成这些需求。我做合......
  • 构建可扩展的网校平台:在线教育系统源码设计与架构最佳实践
    随着科技的不断发展,在线教育系统在教育领域扮演着越来越重要的角色。本文将深入探讨如何构建一个可扩展的网校平台,重点关注在线教育系统的源码设计和架构最佳实践。 一、引言在当前信息时代,教育已经超越了传统的教学方式,转向更加灵活和便捷的在线教育平台。构建一个可扩展的网校平......
  • IoC源码
    主心骨:解析配置定位与注册对象注入对象一、Bean与BeanDefinition1、全局掌握核心接口和类解决了关键问题:将对象之间的关系转而用配置来管理依赖注入:依赖关系在Spring的IoC容器中管理通过把对象包装在Bean中以达到管理对象和进行额外操作的目的Bean是Spring的一等公......
  • 35. 干货系列从零用Rust编写负载均衡及代理,代理服务器的源码升级改造
    wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/......
  • springboot015粮食仓库管理系统(毕业设计,附数据库和源码)
    一.4开发的技术介绍一.4.1Springboot介绍一.4.2Java语言一.4.3MySQL数据库一.5论文的结构二需求分析二.1需求设计二.2可行性分析二.2.1技术可行性二.2.2经济可行性二.2.3操作可行性二.3功能需求分析表2-1粮食仓库管理系统功能结构图三系统设计三.1数据库概念结构......
  • springboot012响应式企业员工绩效考评系统(vue,毕业设计,附源码和数据库)
    2 关键技术2.1SpringBoot框架2.2 Maven环境2.3Mysql数据库2.4Vue.js框架2.5小结4 系统分析与设计4.1系统架构在对一个系统的开发中,必须全面的考虑用户对学校系统的需求,这个步骤需要开发出系统的功能的用途,每个图应代表系统的一个功能模块。系统架构图:4.2系统功能设......
  • springboot045新闻推荐系统-计算机毕业设计源码+LW文档
    摘要随着信息互联网购物的飞速发展,国内放开了自媒体的政策,一般企业都开始开发属于自己内容分发平台的网站。本文介绍了新闻推荐系统的开发全过程。通过分析企业对于新闻推荐系统的需求,创建了一个计算机管理新闻推荐系统的方案。文章介绍了新闻推荐系统的系统分析部分,包括可行性分......
  • 智慧工地源码,劳务实名制信息化管理解决方案
     智慧工地劳务实名制信息化管理解决方案是基于物联网、人脸识别、云计算等信息化技术,与智能终端硬件设备互联互通,完成劳务人员基础数据收集,实现对劳务人员从信息登记、合同管理、劳务进场、安全教育、项目管理、考勤统计、工资结算、工资支付的全过程管控。    劳务实名制......
  • OpenHarmony应用编译 - 如何在源码中编译复杂应用(4.0-Release)
    概述文档环境开发环境:Windows11编译环境:Ubuntu22.04开发板型号:DAYU200(RK3568)系统版本:OpenHarmony-4.0-Release涉及仓库:applications_launcher功能简介在OpenHarmony系统中预安装应用的hap包会随系统编译打包到镜像中,目前有两种编译预安装应用hap包的方式,一种为随系统编译时,编......