C# NuGet:在项目中将包依赖项显式列为包引用,以便可以卸载它们
我正在创建一个NuGet包(我们称之为C# NuGet:在项目中将包依赖项显式列为包引用,以便可以卸载它们,c#,.net-core,nuget,nuget-package,nuspec,C#,.net Core,Nuget,Nuget Package,Nuspec,我正在创建一个NuGet包(我们称之为Lib),它在一个单独的包中也有分析器(Lib.analyzers) 默认情况下,我希望在安装Lib时将Lib.Analyzers安装到项目中。我可以通过在Lib的依赖项中(在.nuspec文件中)列出Lib.Analyzers来实现这一点 但我也希望用户能够在不需要时再次卸载Lib.Analyzers AFAIK包依赖项未在包管理器中作为单个包列出,并且以下内容在包管理器控制台中不起作用: PM> Install-Package Lib ... PM
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'
有没有办法做到这一点?我在房间里什么也找不到
根本原因
我想尽量减少新用户的摩擦,即他们应该获得Lib.Analyzers
提供的帮助,而不必记得每次安装Lib
时都要安装分析器
但是我也不希望Lib.Analyzers
被强迫给可能不再需要它们的有经验的用户
变通办法
我当前的解决方法是将Lib
重命名为Lib.Core
,删除其对Lib.Analyzers
的依赖关系,并创建名为Lib
的第三个元包,将两者捆绑在一起,从而得到以下依赖关系图:
Lib
|- Lib.Core
'- Lib.Analyzers
新用户将始终安装Lib
,而有经验的用户只能安装Lib.Core
然而,
Lib
实际上是一个相当小的库,所以这个解决方案感觉有点“过度设计”。关于可选依赖项的GitHub问题已经解决
因此,不幸的是,它目前不受支持,将来似乎也不受支持
给出了以下密切的理由:
有两个原因-我们正在关闭多年未激活的bug
一年多,两年多,这不符合我们的计划
在不久的将来
如果您有此功能的strong案例,则可以打开新问题
我们会考虑的。
也许你的问题是一个“强有力的案例”
话虽如此,您的解决方案似乎相当不错。更多的是文档/介绍问题
如果这是你问题的根源的话,还有一个问题
啊,太糟糕了。感谢您找到相关问题。