![](/img/trans.png)
[英]How do I create an individual nuget package for each project in a solution, with project references converted to nuget dependencies?
[英]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.