前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >dotnet tool 自动找到项目里面重复的 NuGet 依赖项

dotnet tool 自动找到项目里面重复的 NuGet 依赖项

作者头像
林德熙
发布于 2021-02-22 02:28:57
发布于 2021-02-22 02:28:57
78900
代码可运行
举报
文章被收录于专栏:林德熙的博客林德熙的博客
运行总次数:0
代码可运行

使用新的 SDK 风格的 csproj 的时候,允许 NuGet 包进行依赖传递。意思是如果我 A 项目安装了库 L 那么如果有 B 项目引用 A 项目,那么自动 B 项目也就安装了库 L 而不需要项目 B 再次手动安装。也就是如果此时的 B 项目里面也加上了 L 库的安装,那么这个安装就是多余的。本文安利大家一个工具,可以自动了解有哪些项目的哪些库是多余安装的,通过依赖传递就能安装上,不需要手动安装,可以删除

这是一个 dotnet tool 工具,在使用之前需要使用如下命令进行安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dotnet tool install -g snitch

在自己的项目分析有哪些项目的哪些库是可以删除的,可以通过如下命令分析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
snitch Foo.sln

请将 Foo.sln 替换为你自己的项目文件

通过此工具分析之后,就可以了解具体项目上有哪些库可以删除

在删除掉多余的库之后,就能减少 NuGet 的版本的冲突,也让 csproj 的内容更少,在修改 csproj 的时候的冲突也会更少

此工具在 GitHub 完全开源,请看 spectresystems/snitch: A tool that help you find duplicate transitive package references.

更多好用的工具请看 一些好用的 dotnet tool 工具


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-tool-%E8%87%AA%E5%8A%A8%E6%89%BE%E5%88%B0%E9%A1%B9%E7%9B%AE%E9%87%8C%E9%9D%A2%E9%87%8D%E5%A4%8D%E7%9A%84-NuGet-%E4%BE%9D%E8%B5%96%E9%A1%B9.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者前往 CSDN 关注我的主页

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
dotnet tool 判断博客文档链接是否可用的工具
本文来和大家安利一个好用的工具,通过这个工具可以找到自己博客文档里面,是否存在有链接已经失效了
林德熙
2020/11/19
3330
dotnet 集成测试 SmartSql 存在静态量导致多个主机启动提示 Alias 已存在
在集成测试中,我采用单个进程开启多个主机,可以理解为一个用例开启一次主机。但是在我使用到 SmartSql 的功能时,我发现在一个主机关闭之后,再开启下一个主机,会因为使用了相同的别名而提示 SmartSql.Alias:[SmartSql] already exist 错误。本文告诉大家如何解决此问题
林德熙
2020/12/31
6520
dotnet 自动迁移 VS 2017 以前的 csproj 转为 dotnet core 的 SDK Style 风格工具
本文来安利大家一个特别好用的工具,可以自动将 VisualStudio 2017 以前版本创建的 Franken-proj 格式 的 csproj 项目文件转换为 dotnet core 的 SDK Style 风格的csproj 项目文件的工具
林德熙
2021/01/20
6090
VisualStudio 如何在 NuGet 包里面同时包含 DEBUG 和 RELEASE 的库
我在开发的时候需要使用到一些 DEBUG 库进行调试,但是我的库是通过 NuGet 给用户的,如果在 NuGet 里面使用到了 DEBUG 的库那么会让代码的运行效率降低。于是我就找到一个方法,可以在 NuGet 同时打包调试和发布的包,这样在用户调试的时候就可以使用调试的代码
林德熙
2019/04/22
2.1K0
VisualStudio 如何在 NuGet 包里面同时包含 DEBUG 和 RELEASE 的库
VisualStudio 配置多进程调试快捷键启动项目
在使用 VisualStudio 进行多进程调试的时候,只有第一个设置为启动项目的进程可以通过按下 F5 进行调试,而其他的进程是需要在对应项目右击选择调试,点击启动新实例,这样的调试效率实在很低。本文告诉大家如何设置快捷键用来启动选中项目调试
林德熙
2019/10/15
7940
VisualStudio 配置多进程调试快捷键启动项目
GitHub 的 Action 接入 Stryker.NET 进行自动化测试单元测试鲁棒性
假设有一个捣蛋的小伙伴加入了你的团队,这个捣蛋的小伙伴喜欢乱改代码,请问此时的单元测试能否拦住这些逗比行为?如果不能拦住逗比行为,是否代表着单元测试有所欠缺,或者有某些分支逻辑没有考虑到。本文将告诉大家的 Stryker.NET 就属于这样的一个捣蛋的小伙伴,这个工具将会在执行测试的时候乱改你的代码,看看你的单元测试是否能拦住这样的行为。如果在乱改代码之后,单元测试依然是通过的,那证明单元测试没有拦住此行为,说不定就需要改改单元测试了
林德熙
2021/12/24
8640
Roslyn 打包 NuGet 包 BuildTransitive 文件夹用于穿透依赖传递拷贝文件
默认的 PackageReference 可以实现传递依赖,传递依赖的含义是是假定 B 项目安装了 A 库,而 C 项目依赖 B 项目,那么 C 项目将会自然拿到 A 库的 DLL 引用。但默认的 NuGet 包的构建指导文件 targets 命令是不会在传递执行的,也就是如上的 C 项目将不会执行 B 项目安装的 A 库里面的 target 内容 有一些项目需要拷贝自定义文件,例如拷贝图片或者一些 Native 的 DLL 等资源。如 WPF 框架需要拷贝 PenIME 等资源。如果只是在最底层的项目安装了库,那为了让可执行文件项目也输出库的资源,就需要在可执行项目上也安装库。以上的方法的不足在于安装复杂,也许会忘记安装 本文告诉大家一个解决方法是通过在制作库的时候,加上 BuildTransitive 文件夹,在此文件夹内添加构建指导文件,此时这个构建指导文件 targets 文件里面的命令将会在传递中执行,也就是说只需要在底层的项目安装即可,不需要在可执行项目上也安装库
林德熙
2021/12/24
7590
VisualStudio 外部工具配合 dotnet tool 制作复制文件名工具
我在 VisualStudio 中,为了方便沟通,我需要复制当前文件的文件名,不包含本地的路径,但是我没有找到一个好的复制方式,每次都是复制完全的路径,然后再删除部分的功能。为了提高效率,于是我就自己使用 .NET Core 制作了一个 dotnet 工具,让 VisualStudio 的自定义外部工具配合 dotnet tool 加上传入参数实现通过按下快捷键即可复制当前标签页对应的文件名。实现在 VisualStudio 中按下某个快捷键即可复制当前打开的文件的文件名到剪贴板的功能
林德熙
2021/04/01
7570
VisualStudio 外部工具配合 dotnet tool 制作复制文件名工具
dotnet Roslyn 通过读取 suo 文件获取解决方案的启动项目
本文来告诉大家一个黑科技,通过 .suo 文件读取 VisualStudio 的启动项目。在 sln 项目里面,都会生成对应的 suo 文件,这个文件是 OLE 格式的文件,文件的格式没有公开,本文的方法适合用在 VisualStudio 2019 上,对于其他版本的 VisualStudio 也许会不适合
林德熙
2021/04/30
7150
dotnet core 发布只带必要的依赖文件
在使用 dotnet core 发布独立项目的时候,会带上大量依赖的库,但是通过微软提供的工具可以去掉一些在代码没有用到的库。
林德熙
2019/03/13
1.5K0
WPF 框架开发 更改 API 之后让 CI 重新创建 API 兼容检查基准
本文是记录在开发 WPF 框架遇到的问题。 在 WPF 框架里面,限制了 API 的变更,所有关于 API 的变动都会触发 API 兼容检查。只有在明确此 API 变更是合理的之后,才能被接受更改。而此兼容判断将会让一些本地构建失败,本文将告诉大家如何使用官方的方法重新创建 API 基准,让本地构建通过
林德熙
2021/01/14
5510
dotnet 使用 TypeNameFormatter 库格式化输出反射泛型类型
默认的反射输出带泛型的类型,都会使用反引号的字符串。使用 TypeNameFormatter 库可以输出贴近代码的输出
林德熙
2021/03/29
5160
dotnet 5 破坏性改动 WPF 和 WinForms 的 OutputType 输出类型重定向为 WinExe 类型
官方团队为了防逗比,默认将 OutputType 输出类型重定向为 WinExe 类型,这样能解决很多新手遇到的 WPF 项目显示出黑框控制台界面问题。而对于一些老司机来说,这个特点反而有点迷,特别是在尝试打开控制台调试的时候
林德熙
2020/12/16
8830
dotnet 不申请额外数组空间合并多个只读数组列表
我在写一个简单的功能,需要将两个不同的数组合并到一起,但是我的功能只是做只读,如果合并的方法需要申请额外的内存空间,将降低性能。本文写了一个简单的方法,通过判断下标的方法做遍历多个数组组合在一起,通过判断当前获取的下标在对应哪个数组下标范围内,返回对应数组的元素
林德熙
2019/10/12
1.2K0
dotnet OpenXML 解析 WPS 不规范的 PPT 文件的 cNvPr 重复 id 问题
在收到了反馈说有一份课件,打开解析就发现替换的元素不对,原因是这个课件里面的 Slide Master 里面存在一个元素的 id 和某个页面的元素 id 是相同的,这不符合 ECMA 376 的规范。通过读取文档的内容,发现这是 WPS 制作出来的 PPT 文件。本文做一个存档,用来告诉大家有这个坑
林德熙
2020/12/22
1.1K0
GitHub Action 新上线 WPF .NET Core 自动构建模板
在很土豪的微软免费给大家提供 GitHub 的构建服务器受到了小伙伴们的一堆好评之后,微软最近推出了 WPF 的 .NET Core 版本的模板,可以快速上手 WPF 项目的自动构建,支持自动进行单元测试和打包,同时输出打包的文件
林德熙
2020/05/09
6310
GitHub Action 新上线 WPF .NET Core 自动构建模板
dotnet 使用 Obsolete 特性标记成员过时保持库和框架的兼容性
在开发库以及框架的时候,持续维护会遇到兼容性的问题,如发现了旧版本有一些接口设计不合理,或者方法命名不符合逻辑等。此时如果直接更改原有的属性名或方法名甚至类名等,将会导致上层业务的开发者们在升级库之后构建不通过,因为缺少对应的方法。此时就需要上层业务的开发者们查阅文档才能了解如何应对升级之后带来的变动
林德熙
2020/11/19
6170
Roslyn 通过 Nuget 管理公司配置
本文来告诉大家如何用 Roslyn 管理配置,在开一个新的项目的时候经常需要添加公司,版权等,但是这些信息不想每次都添加于是我就想用 Nuget 管理所有配置,安装一个 nuget 就自动配置
林德熙
2019/03/13
6880
Roslyn 通过 Nuget 管理公司配置
ASP.NET Core 引用其他程序集项目里面的 Controller 控制器
我将控制器 Controller 按照不同的业务,分为多个不同的项目,我需要在路由里面调度到多个不同项目的控制器
林德熙
2021/04/25
1.3K0
ASP.NET Core 引用其他程序集项目里面的 Controller 控制器
dotnet 构建 SourceRoot items must include at least one top-level item when DeterministicSourcePaths is
在使用 dotnet 构建的时候提示 error : SourceRoot items must include at least one top-level (not nested) item when DeterministicSourcePaths is true 构建失败
林德熙
2020/10/15
7490
推荐阅读
dotnet tool 判断博客文档链接是否可用的工具
3330
dotnet 集成测试 SmartSql 存在静态量导致多个主机启动提示 Alias 已存在
6520
dotnet 自动迁移 VS 2017 以前的 csproj 转为 dotnet core 的 SDK Style 风格工具
6090
VisualStudio 如何在 NuGet 包里面同时包含 DEBUG 和 RELEASE 的库
2.1K0
VisualStudio 配置多进程调试快捷键启动项目
7940
GitHub 的 Action 接入 Stryker.NET 进行自动化测试单元测试鲁棒性
8640
Roslyn 打包 NuGet 包 BuildTransitive 文件夹用于穿透依赖传递拷贝文件
7590
VisualStudio 外部工具配合 dotnet tool 制作复制文件名工具
7570
dotnet Roslyn 通过读取 suo 文件获取解决方案的启动项目
7150
dotnet core 发布只带必要的依赖文件
1.5K0
WPF 框架开发 更改 API 之后让 CI 重新创建 API 兼容检查基准
5510
dotnet 使用 TypeNameFormatter 库格式化输出反射泛型类型
5160
dotnet 5 破坏性改动 WPF 和 WinForms 的 OutputType 输出类型重定向为 WinExe 类型
8830
dotnet 不申请额外数组空间合并多个只读数组列表
1.2K0
dotnet OpenXML 解析 WPS 不规范的 PPT 文件的 cNvPr 重复 id 问题
1.1K0
GitHub Action 新上线 WPF .NET Core 自动构建模板
6310
dotnet 使用 Obsolete 特性标记成员过时保持库和框架的兼容性
6170
Roslyn 通过 Nuget 管理公司配置
6880
ASP.NET Core 引用其他程序集项目里面的 Controller 控制器
1.3K0
dotnet 构建 SourceRoot items must include at least one top-level item when DeterministicSourcePaths is
7490
相关推荐
dotnet tool 判断博客文档链接是否可用的工具
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验