当前位置: 首页 > news >正文

通过 mklink 收集本地文件系统的所有 NuGet 包输出目录来快速调试公共组件代码

我们做的公共库可能通过 nuget.org 发布,也可能是自己搭建 NuGet 服务器。但是,如果某个包正在开发中,需要快速验证其是否解决掉一些诡异的 bug 的话,除了单元测试这种间接的测试方法,还可以在本地安装未发布的 NuGet 包的方法来快速调试。

本文介绍如何本地打包发布 NuGet 包,然后通过 mklink 收集所有的本地包达到快速调试的目的。


本文内容

    • 将本地文件夹作为 NuGet 源
    • 通过 mklink 收集散落在各处的本地文件夹 NuGet 源
    • 设置源并体验快速调试

将本地文件夹作为 NuGet 源

我有另一篇博客介绍如何将本地文件夹设置称为 NuGet 包源:

  • 全局或为单独的项目添加自定义的 NuGet 源 - walterlv

在 Visual Studio 中打开 工具 -> 选项 -> NuGet 包管理器 -> 包源 可以直接将一个本地文件夹设置称为 NuGet 包源。

管理包源

其他设置方法可以去那篇博客当中阅读。

通过 mklink 收集散落在各处的本地文件夹 NuGet 源

如下图,是我通过 mklink 将散落在各处的 NuGet 包的调试输出目录收集了起来:

通过 mklink 收集的 NuGet 包源

比如,点开其中的 Walterlv.Packages 可以看到 Walterlv.Packages 仓库中输出的 NuGet 包:

其中的一个 NuGet 输出文件夹

由于我的每一个文件夹都是指向的 Visual Studio 编译后的输出目录,所以,只需要使用 Visual Studio 重新编译一下项目,文件夹中的 NuGet 包即会更新。

于是,这相当于我在一个文件夹中,包含了我整个计算机上所有库项目的 NuGet 包,只需要将这个文件夹设置称为 NuGet 包源,即可直接调试本地任何一个公共组件库打出来的 NuGet 包。

设置源并体验快速调试

如下图,是我将那个收集所有 NuGet 文件夹的目录设置成为了 NuGet 源:

设置的本地 NuGet 源

于是,我可以在 Visual Studio 的包管理器中看到所有还没有发布的,依然处于调试状态的各种库:

各种处于调试状态的各种库

基于此,我们可以在包还没有编写完的时候调试,验证速度非常快。


我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

相关文章:

  • 设计一个 .NET 可用的弱引用集合(可用来做缓存池使用)
  • 使用 C# 中的 dynamic 关键字调用类型方法时可能遇到的各种问题
  • 程序员可能会使用的各种命名规则
  • System.InvalidOperationException:“BuildWindowCore 无法返回寄宿的子窗口句柄。”
  • System.InvalidOperationException:“寄宿的 HWND 必须是指定父级的子窗口。”
  • 在使用 .NET Remoting 技术开发跨进程通信时可能遇到的各种异常
  • 使用 SetParent 跨进程设置父子窗口时的一些问题(小心卡死)
  • System.ComponentModel.Win32Exception (0x80004005): 无效的窗口句柄。
  • 解决 WPF 嵌套的子窗口在改变窗口大小的时候闪烁的问题
  • WPF 的 Application.Current.Dispatcher 中,为什么 Current 可能为 null
  • WPF 的 Application.Current.Dispatcher 中,Dispatcher 属性一定不会为 null
  • 提高使用 Visual Studio 开发效率的键盘快捷键
  • WPF 不要给 Window 类设置变换矩阵(分析篇):System.InvalidOperationException: 转换不可逆。
  • WPF 不要给 Window 类设置变换矩阵(应用篇)
  • git fetch 失败,因为 unable to resolve reference 'refs/remotes/origin/xxx': reference broken
  • 5、React组件事件详解
  • conda常用的命令
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java面向对象及其三大特征
  • 给第三方使用接口的 URL 签名实现
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 回顾2016
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 使用SAX解析XML
  • 手机端车牌号码键盘的vue组件
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • # 飞书APP集成平台-数字化落地
  • ${factoryList }后面有空格不影响
  • (1)STL算法之遍历容器
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (十)T检验-第一部分
  • (算法)前K大的和
  • (五)网络优化与超参数选择--九五小庞
  • .dwp和.webpart的区别
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .Net 8.0 新的变化
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 命令行参数包含应用程序路径吗?
  • .NET/C# 使用反射注册事件
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • [ACTF2020 新生赛]Include
  • [ARM]ldr 和 adr 伪指令的区别
  • [BUUCTF]-Reverse:reverse3解析
  • [C++核心编程](四):类和对象——封装
  • [ios] IOS文件操作的两种方式:NSFileManager操作和流操作【转】
  • [LeetCode] 196. 删除重复的电子邮箱