搭建自己的NuGet托管服务器,并通过符号源服务器提供带源码的调试体验

作者:V君 发布于:2018-9-19 19:43 Wednesday 分类:挖坑经验

尽管花了不少时间但都是些坑或者自己没注意,这次不想扯,直接TLDR:


使用命令行把项目打包并推送到服务器 (参考官方文档)

1) 下载最新版NuGet.exe,

2) 为项目编写nuspec文件,可以通过spec参数创建一个模板

3) 分别使用pack命令打包库pack -symbol也生成符号包

4) 使用push命令将这俩分别推送到对应服务器

+) 如果想连同PDB文件一起打包(可以堆栈跟踪里获得源代码位置),可以添加下配置到nuspec根

  <files>
    <file src="bin\$configuration$\$id$.pdb" target="lib\netxxx\" />
  </files>

 这样做有个副作用会让符号包生成时产生警告PDB文件重复

 还有一个副作用会让符号源失效,在DLL旁边PDB似乎挡住了前往符号源服务器的去路,

 导致F11进不去,你得在启动调试之前自己把输出目录的PDB删除

 目前的做法是写成生成事件,仅匹配Debug生成时删除指定的PDB文件


搭建NuGet服务器 (参考自官方文档)

1) 新建空白Web项目,引入NuGet包[NuGet.Server]

2) 修改web.config配置ApiKey或干脆禁用验证

3) 部署到服务器


搭建符号服务器 (参考X.D.的博客文章)

1) 创建空白MVC项目,引入NuGet包[SymbolSource.Server.Basic]

2) 在服务器上安装Windows Kits Debuggers,下载SDK安装器进行可选安装

3) 部署到服务器,配置好web.config指向上者安装路径的srcsrv

4) 如果用了主机头绑定和HOSTS,在服务器也需要配置指向自己的HOSTS

x) 这货好像也能当NuGet包托管服务器?(但貌似不能设置ApiKey验证


在VS使用自己部署的NuGet包服务器

1) 在菜单工具-选项打开选项对话框

2) 在左边选择NuGet包管理器-程序包源,添加服务器地址到列表,确定

3) 在包管理器检索时不要忘记切换到自己的服务器,或简单选择全部


在VS使用调试符号 (参考符号源官网文档)

1) 在菜单工具-选项打开选项对话框

2) 在左边选择调试-符号,添加服务器地址到列表

3) 接着在左边找到兄弟节点常规对里面的选项做一些改动,见参考文档

4) 在调试时对着提供了符号包的NuGet程序集调用按下F11, VS会自动找到源代码并进入调试


扩充话题


在程序集里嵌入Git提交哈希,可以使用[MSbuildGitHash]这个包来轻松完成

但这货有个缺点,如果机器上没安装Git或者当前项目不是Git托管,就会编译失败

需要自己指定MSBuild条件来绕过.


标签: 软件开发 源码管理 调试技术 .NET

引用地址:

发表评论:

Powered by emlog 去你妹的备案 sitemap