c# - 具有新 sdk 样式 csproj 的附加 nuget 依赖项
问题描述
我曾经有 nuspec 用于我的图书馆。我在那里添加了 roslyn 分析器包,使用<dependency/>
. lib 本身不需要该软件包。仅库客户端需要它。现在我使用新的 sdk 风格的项目。我看到,在那里添加 nuget 依赖项的唯一方法是使用<PackageReference/>
. 但这也会将软件包安装到 lib 本身。在我的情况下,它破坏了项目,因为分析器仅为客户设计。有什么方法可以强制为客户提供一些包裹但避免包裹。我现在看到的唯一选择是使用 NuspecFile,但我想摆脱 nuspec。
解决方案
我不认为,这对于包引用是可能的,因为它与依赖项的概念相矛盾。如果您的项目不依赖于包,那么它在设计上不是依赖项,特别是如果它仅由客户使用或不得包含在您的项目中。使用与否是客户的责任。
我想强制安装,因为它包含编译时检查以避免错误使用。
您的库不需要包含该包,因为没有依赖关系。这是一个有助于避免错误使用的选项。我认为让客户自己选择会更合理,不管他们是否想使用 Roslyn 分析仪。请记住,还有其他分析器,并不是每个人都可以使用你的,甚至想使用你的,但你可以在你的项目网站上推荐它。
您可以将未使用的依赖项添加到 NuSpec 文件的原因是包管理器无法知道该包是否在任何地方使用,因为没有构建环境或编译器可以检查它。这更像是一个设计漏洞,你可能不依赖它。
推荐阅读
- amazon-web-services - 无法将数据从 AWS Kinesis 存档到 Glacier
- python - 3D-高斯过程回归
- docker - 我在 docker Container 中安装了 FreeRADIUS 和 Mysql
- aerospike - 如何使用 aql 对 Aerospike 中特定 bin 中的所有列表进行排序?
- javascript - HTML 导入不起作用...即使它受支持
- python - subprocess.Popen [Errno 2] 没有这样的文件或目录
- java - 强制 Maven 在项目目录中获取依赖项
- angular - 带有forkjoin的Angular 4 Observable区间?
- freebsd - 用于 http 请求的 FreeBSD 端口重定向
- javascript - 从服务获取数据到我的组件