使用新的 SDK 样式的 csproj 进行额外的 nuget 依赖项



我曾经为我的库提供 nuspec。在那里,我使用<dependency/>添加了 roslyn 分析仪包。库本身不需要该包。只有库客户端才需要它。现在我使用新的 sdk 样式项目。我看到,在那里添加 nuget 依赖项的唯一方法是使用<PackageReference/>.但这也会将软件包安装到库本身。就我而言,它破坏了项目,因为分析仪仅针对客户而设计。有没有办法为客户端强制某些包,但避免为包。我现在看到的唯一选择是使用NuspecFile,但我想摆脱nuspec。

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

我想强制安装,因为它包含编译时检查以避免不正确的使用。

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

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

最新更新