【发布时间】:2021-04-20 12:28:25
【问题描述】:
我正在创建一个 NuGet 包(我们称之为 Lib),它还在单独的包中包含分析器 (Lib.Analyzers)。
默认情况下,我希望在安装Lib 时将Lib.Analyzers 安装到项目中。我可以通过在Lib 的依赖项中(在.nuspec 文件中)列出Lib.Analyzers 来实现这一点。
但我也希望用户能够卸载Lib.Analyzers 在他们不想要的时候再次。
AFAIK 包依赖项未在包管理器中作为单独的包列出,以下内容在包管理器控制台中不起作用:
PM> Install-Package Lib
...
PM> Uninstall-Package Lib.Analyzers
Uninstall-Package : Package 'Lib.Analyzers' to be uninstalled could not be found in project 'ClassLibrary1'
有没有办法做到这一点?我在docs 中找不到任何内容。
基本原理
我想尽量减少新用户的摩擦,即他们应该得到Lib.Analyzers 提供的帮助,而不必记住每次安装Lib 时都要安装分析器。
但我也希望 Lib.Analyzers 不会被强迫给可能不再需要他们的有经验的用户。
解决方法
我目前的解决方法是将Lib 重命名为Lib.Core,将其依赖关系删除为Lib.Analyzers,并创建一个名为Lib 的第三个元包,将两者捆绑在一起,得到以下依赖关系图:
Lib
|- Lib.Core
'- Lib.Analyzers
新用户将始终安装Lib,而有经验的用户只能安装Lib.Core。
但是,Lib 实际上是一个相当小的库,所以这个解决方案感觉有点“过度设计”。
【问题讨论】:
标签: c# .net-core nuget nuget-package nuspec