前情概要

让你发布的nuget包支持源代码调试#为gitlab的私有源代码项目提供支持 小节中有介绍到如何让gitlab的私有存储库支持SourceLink. 其中有一个方法是说在vs中打开webbrower登录, 利用已登录session支持. 但是在时间车轮经过一段不短的距离后. vs2022 中已经没有web brower了, 同时gitlab也不再支持IE. 所以利用共享Session方式行不通了.

同时GCM+SourceLink任然不支持, 最后只能选择使用Proxy的方式来实现一把.

方案

VS --> SourceLink --> gitlab.com(127.0.0.1,gitlabproxy) --> gitlab.com(使用 用户token + gitlab api 下载源文件)

环境配置

修改hosts文件, 将gitlab.com 指向 127.0.0.1

# C:\Windows\System32\drivers\etc\hosts
127.0.0.1 gitlab.com

启动一个WebProxy. 让gitlabproxy可以访问真正的gitlab.com

用什么都可以, 反正就是一个Proxy, 例如我的http代理在 http://127.0.0.1:10809.

当然, 如果不选择使用webproxy的方式, 也可以配置gitlabproxy的gitlabHost, 将它改成一个真实的gitlab.com服务器ip, 然后配置requet.header.host=gitlab.com

准备 gitlab.com(127.0.0.1,gitlabproxy) 代理程序

https://gitlab.com/slcon/pub/repo/gitlabproxy repo clone 下来.

然后做一点修改

# gitlab 在12还是多少版本之后修改了路径规则, 之后的版本没有 "/-/" 部分了. 所以删除个.
new Regex(@"^\/(?<project>.+?)\/-\/raw\/(?<commit>[\da-f].+?)\/(?<filepath>.+)$");
# ==>
new Regex(@"^\/(?<project>.+?)\/raw\/(?<commit>[\da-f].+?)\/(?<filepath>.+)$"); # 使用代理, 访问真正的gitlab.com
response = WebRequest.Create(remoteUrl).GetResponse() as HttpWebResponse;
# ==>
var request = WebRequest.Create(remoteUrl);
request.Proxy = new WebProxy("http://127.0.0.1:10809");
response = request.GetResponse() as HttpWebResponse;

将此修改的gitlabproxy程序部署到本地iis, 并绑定域名 https://gitlab.com:443

修改 gitlabproxy 的 web.config 文件

到https://gitlab.com/-/profile/personal_access_tokens 创建一个个人token, 然后添加到appSettings section 中.

<appSettings>
<add key="gitlabHost" value="https://gitlab.com" />
<add key="{your gitlab group path}" value="glpat-****************" />
<add key="{your gitlab project path}" value="glpat-****************" />
</appSettings>

完成

不出意外的话, 现在在vs里面F11调试就可以进入源代码了.

Links

https://gitlab.com/slcon/pub/repo/gitlabproxy

https://github.com/dotnet/sourcelink/issues/281

Gitlab私有存储库支持SourceLink 调试之使用proxy方式的更多相关文章

  1. 使用MySQL Yum存储库的快速指南【mysql官方文档】

    使用MySQL Yum存储库的快速指南 抽象 MySQL Yum存储库提供用于在Linux平台上安装MySQL服务器,客户端和其他组件的RPM包.这些软件包还可以升级和替换从Linux发行版本机软件存 ...

  2. 让你发布的nuget包支持源代码调试

    前情概要 在不久的从前(也还是要以年为单位哈), 我们如果需要调试第三方代码, 或者框架代码很麻烦. 需要配置symbols, 匹配原始代码路径等. 为此, MS推出了 Source Link 功能, ...

  3. 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库

     发布于 2014-02-10 作者 陈 忠岳 持续集成 (CI) 的历史源远流长, 其宗旨在于软件团队在敏捷环境中不断将他们的工作整合为持续构建.管理 CI 进程的工具已存在一段时间.过去几年中 ...

  4. 94、存储库之MongoDB、mysql

    本篇导航: 简介 MongoDB基础知识 安装 基本数据类型 CRUD操作 其它 存储库之mysql   一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库1.易用性 MongoDB是 ...

  5. 存储库之MongoDB、mysql

    本篇导航: 简介 MongoDB基础知识 安装 基本数据类型 CRUD操作 其它 存储库之mysql   一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库1.易用性 MongoDB是 ...

  6. Git 安装及用法 github 代码发布 gitlab私有仓库的搭建

    版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 这个版本控制软件,有 svn还有git,是一个工具. git是由linux的作者开发的 git是一个分布式版本控制系统 ...

  7. 每秒高达1.6亿次操作的并发键值存储库 FASTER 诞生

    FASTER 在过去十年中,云中的数据密集型应用程序和服务有了巨大的增长.数据在各种边设施(例如,设备,浏览器和服务器)上创建,并由云应用程序处理用来获得数据价值或做出决策.应用程序和服务可以处理收集 ...

  8. MySQL Yum存储库 安装、升级、集群

    添加MySQL Yum存储库 首先,将MySQL Yum存储库添加到系统的存储库列表中.按着这些次序: 在http://dev.mysql.com/downloads/repo/yum/上转到MySQ ...

  9. 【Asp.net入门07】第一个ASP.NET 应用程序-创建数据模型和存储库

    1.理解概念 先理解一下两个概念. 模型 模型是指数据的结构类型,以及可调用的方法.对面向对象编程方法来说,其实就是类.模型类就是一个描述数据的类.只有把数据按一定方式描述出来,我们才能在程序中方便地 ...

  10. 微软并发Key-Value存储库FASTER介绍

    微软支持并发的Key-Value 存储库有C++与C#两个版本.号称迄今为止最快的并发键值存储.下面是C#版本翻译: FASTER C#可在.NET Framework和.NET Core中运行,并且 ...

随机推荐

  1. [USACO09JAN] Safe Travel G 题解

    UPDATE on 2024.5.10 删去左偏树代码中令人误解的 fa 数组. 前话 题目链接:洛谷. 貌似别人都是使用并查集维护的方法,然而由于排序.最短路等算法瓶颈,以下令 \(n\) 和 \( ...

  2. python增删查改实例

    本文介绍一个实例,即删除数据库中原有的表格TEST1,新建一个表格TEST2,并在TEST2中插入3行数据.插入数据以后,查询出ID=3的数据,读出,最后将其删除. 结果: 代码: ''' impor ...

  3. 解密Prompt系列36. Prompt结构化编写和最优化算法UNIPROMPT

    上一章我们聊了标准化的Prompt生成方案DSPy,但DSPy还是更多依赖few-shot的Prompt编写范式,在纯任务描述型指令上的优化效果有限.这一章我们就重点关注描述性指令优化.我们先简单介绍 ...

  4. JavaScript设计模式样例十七 —— 迭代器模式

    迭代器模式(Itrator Pattern) 定义:用于顺序访问集合对象的元素,不需要知道集合对象的底层表示.目的:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示.场景:$ ...

  5. Ubuntu上snmp安装、配置、启动及远程测试完整过程

    说明 关于一个完整的教程,还是那句话,国内的要么不完整,要么就太旧了,而且思路也不清晰,所以这里写一篇完整的给大家分享一下. 虽然对于Linux主机的监控可以通过执行特定的命令来完成,但是相比之后,通 ...

  6. armbian指令大全

    修复缺失内容 使用以下命令修复安装时缺失的内容: sudo apt --fix-broken install 使用 aptitude 安装软件 aptitude 是 Debian 及其衍生系统中功能强 ...

  7. Python with 语句的用法

    with 语句是Python中用于简化资源管理的一种语法结构,通常与上下文管理器(Context Manager)一起使用.上下文管理器提供了一种机制,用于确保资源在使用完毕后能够被正确释放,例如文件 ...

  8. 探索不同引擎Innodb和Myisam的索引优化方案

    数据库可能存在千万级的数据,必须将这些行数据以一定的结构组织起来做到高效的增删改查. 我们将分别探索innodb和myisam两种引擎的索引方案. 一.InnoDB的索引 1.假设表初始没有记录,只有 ...

  9. Falcon Mamba: 首个高效的无注意力机制 7B 模型

    Falcon Mamba 是由阿布扎比的 Technology Innovation Institute (TII) 开发并基于 TII Falcon Mamba 7B License 1.0 的开放 ...

  10. 游戏AI行为决策——Behavior Tree(行为树)

    游戏AI行为决策--行为树 前言 行为树,是目前游戏中应用较为广泛的一种行为决策模型.这离不开它成熟的可视化编辑工具,例如Unity商城中的「Behaviour Designer」,甚至是虚幻引擎也自 ...