首页 > 解决方案 > 具有新 sdk 样式 csproj 的附加 nuget 依赖项

问题描述

我曾经有 nuspec 用于我的图书馆。我在那里添加了 roslyn 分析器包,使用<dependency/>. lib 本身不需要该软件包。仅库客户端需要它。现在我使用新的 sdk 风格的项目。我看到,在那里添加 nuget 依赖项的唯一方法是使用<PackageReference/>. 但这也会将软件包安装到 lib 本身。在我的情况下,它破坏了项目,因为分析器仅为客户设计。有什么方法可以强制为客户提供一些包裹但避免包裹。我现在看到的唯一选择是使用 NuspecFile,但我想摆脱 nuspec。

标签: c#nuget

解决方案


我不认为,这对于包引用是可能的,因为它与依赖项的概念相矛盾。如果您的项目不依赖于包,那么它在设计上不是依赖项,特别是如果它仅由客户使用或不得包含在您的项目中。使用与否是客户的责任。

我想强制安装,因为它包含编译时检查以避免错误使用。

您的库不需要包含该包,因为没有依赖关系。这是一个有助于避免错误使用的选项。我认为让客户自己选择会更合理,不管他们是否想使用 Roslyn 分析仪。请记住,还有其他分析器,并不是每个人都可以使用你的,甚至想使用你的,但你可以在你的项目网站上推荐它。

您可以将未使用的依赖项添加到 NuSpec 文件的原因是包管理器无法知道该包是否在任何地方使用,因为没有构建环境或编译器可以检查它。这更像是一个设计漏洞,你可能不依赖它。


推荐阅读