gitlab私有存储库支持sourcelink 调试之使用proxy方式_czd890-编程思维

前情概要

让你发布的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 下来.
然后做一点修改

# Microsoft.SourceLink.GitLab.1.0.0 打包的生成的PATH中已经没有 "/-/" 部分了. 所以删除个.
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

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/calvinK/p/16637030.html

乘风破浪,遇见最佳跨平台跨终端框架.net core/.net生态_再谈.net core添加docker支持_taylorshi-编程思维

背景 很多话题都值得过一段时间再拿出来说说,因为整个.Net生态和社区都在飞速前进,也许你以前知道的,放到如今已经不适用了,需要与时俱进。 这篇重温下给.Net Core项目添加Docker支持并部署运行。 背景: Visual Studio 2022已经成为主流了。 .Net 6 LTS已经成为主流了。 Docke

乘风破浪,遇见最佳跨平台跨终端框架.net core/.net生态_伴随.net6/7与时俱进的.net cli命令行接口_taylorshi-编程思维

前言 .NET命令行接口(CLI)工具是用于开发、生成、运行和发布.NET应用程序的跨平台工具链。 虽然之前已经写过温故知新,DotNet Core SDK和.Net CLI十八般武艺 ,但是随着.Net迈入6,甚至预览7,开始8,有些内容已经开始不适用了,有些命令也随着发生变动,加上Ubuntu和微软正式合作,

signalr+fluentvalidation实现mvc_hofmann-编程思维

SignalR 简介 - 简书 (jianshu.com) SignalR提供了实时通讯的功能,可以在Asp.Net项目中使用网页实现实时通讯,比如聊天室、在线游戏等等。在服务端通过编写SignalR Hub,可以调用页面上的javascript函数,同样,通过hubconnection,客户端可以使用javascr

使用 visual studio 2019 批量添加代码文件头_技术译民-编程思维

应用场景介绍 在我们使用一些开源项目时,基本上都会在每个源代码文件的头部看到一段版权声明。一个项目或解决方案中源代码文件的个数少则几十,多则几千甚至更多,那么怎么才能给这么多文件方便地批量添加或者修改一致的文件头呢?在 2020 年 8 月 11 日 更新的 Visual Studio 2019 v16.7.1 版中,

第十七篇 c# .net 6开发环境搭建 - 编程思维

0.基础环境类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)系统:银河麒麟操作系统 V10(SP1)关键词:信创,麒麟系统,linux,.net,.netcore,c#,microsoft,飞腾,arm1.需求背景c#是一门非常优秀的语言,不少工控与医疗信息化行业软件。此外,其ef框架也

.net设计模式(2):1.2 抽象工厂模式(abstract factory) - 编程思维

概述 抽象工厂模式(Abstract Factory)是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。 定义 抽象工厂模式(Abstract Facto