NuGet:明确列出包依赖项作为项目中的包引用,以便可以卸载它们
NuGet: explicitly list package dependencies as package references in project so they can be uninstalled
我正在创建一个 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
实际上是一个相当小的库,所以这个解决方案感觉有点“过度设计”。
存在一个关于可选依赖项 here 的 GitHub 问题,该问题已关闭。
所以很遗憾,目前不支持它,将来似乎也不支持。
rohit21agrawal 给出了以下关闭原因:
Couple of reasons - we are closing bugs that have not been active for
over a year, and two, this doesn’t fit in with the plans we have for
NuGet in the near future.
You can open a new issue if you have a strong case for this feature
and we would consider it.
也许您的问题是“强有力的案例”。
话虽如此,您的解决方法似乎还不错。更多 documentation/introduction 问题。
还有一个 option to suppress specific analyzers,如果这是您问题的根源。
我正在创建一个 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
实际上是一个相当小的库,所以这个解决方案感觉有点“过度设计”。
存在一个关于可选依赖项 here 的 GitHub 问题,该问题已关闭。
所以很遗憾,目前不支持它,将来似乎也不支持。
rohit21agrawal 给出了以下关闭原因:
Couple of reasons - we are closing bugs that have not been active for over a year, and two, this doesn’t fit in with the plans we have for NuGet in the near future.
You can open a new issue if you have a strong case for this feature and we would consider it.
也许您的问题是“强有力的案例”。
话虽如此,您的解决方法似乎还不错。更多 documentation/introduction 问题。
还有一个 option to suppress specific analyzers,如果这是您问题的根源。