繁体   English   中英

NuGet:在项目中明确列出 package 依赖项作为 package 引用,以便可以卸载它们

[英]NuGet: explicitly list package dependencies as package references in project so they can be uninstalled

我正在创建一个 NuGet package (我们称之为Lib ),它在单独的 package ( Lib.Analyzers )中也有分析器

默认情况下,我希望在安装Lib时将Lib.Analyzers安装到项目中。 我可以通过在Lib的依赖项(在.nuspec文件中)中列出Lib.Analyzers来实现这一点。

但我也希望用户能够在不需要时再次卸载Lib.Analyzers

AFAIK package 依赖项未在 package 管理器中列为单独的包,以下在 package 管理器控制台中不起作用:

PM> Install-Package Lib
...
PM> Uninstall-Package Lib.Analyzers
Uninstall-Package : Package 'Lib.Analyzers' to be uninstalled could not be found in project 'ClassLibrary1'

有没有办法做到这一点? 我在文档中找不到任何东西。

基本原理

我想尽量减少新用户的摩擦,即他们应该得到Lib.Analyzers提供的帮助,而不必记住每次安装Lib时都要安装分析器。

但我也希望Lib.Analyzers不会被强加给可能不再需要它们的有经验的用户。

解决方法

我目前的解决方法是将Lib重命名为Lib.Core ,删除其对Lib.Analyzers的依赖关系,并创建第三个名为Lib的元包,将两者捆绑在一起,得到以下依赖关系图:

Lib
|- Lib.Core
'- Lib.Analyzers

新用户总是会安装Lib ,而有经验的用户只能安装Lib.Core

然而, Lib实际上是一个相当小的库,所以这个解决方案感觉有点“过度设计”。

这里有一个关于可选依赖项的 GitHub 问题,已关闭。

所以不幸的是,目前不支持它,而且似乎将来也不支持。

rohit21agrawal给出了以下接近的理由:

有几个原因 - 我们正在关闭一年多没有活跃的错误,第二,这不符合我们在不久的将来为 NuGet 制定的计划。

如果您对此功能有充分的理由,您可以打开一个新问题,我们会考虑它。

也许您的问题是“强有力的案例”

话虽如此,您的解决方法似乎还不错。 更多文档/介绍问题。


如果这是您问题的根源,还有一个选项可以抑制特定分析器

灯泡菜单

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM