在非 sdk 项目中使用时无法解决 NuGet 包依赖关系,但在 sdk 项目中可以正常工作
Posted
技术标签:
【中文标题】在非 sdk 项目中使用时无法解决 NuGet 包依赖关系,但在 sdk 项目中可以正常工作【英文标题】:unable to resolve NuGet package dependency when using in non-sdk project but works fine with sdk project 【发布时间】:2021-12-22 14:39:27 【问题描述】:我有一个具有以下目录结构的 NuGet 包。
dog.1.0.0.0
- packages
- dog.dll
此 NuGet 在 SDK 项目模板项目中使用时可以工作并解决依赖关系,但它不适用于非 SDK 项目模板项目,即使它已安装但无法解决依赖关系。
注意:我对这两个项目都使用 PackageReferences 格式。
【问题讨论】:
您的问题似乎表明dog.dll
位于包的根目录中(nupkg/zip)。但 NuGet 永远不会使用它,即使是用于 SDK 风格的项目。这个问题缺少我需要提供答案的信息。 A working sample 会有很大帮助。 NuGet 通常对 SDK 和非 SDK 项目一视同仁,因此没有明显/常见的原因导致它无法工作。
【参考方案1】:
如果你尝试安装其他 NuGet 包,VS 会解决它们的依赖关系吗?我相信所有 NuGet 包都会出现此问题。
我认为这是因为 VS 的解决方案资源管理器中显示的 non-sdk 和 new-sdk 项目的结构不同。而对于非sdk项目(使用packagereference
或迁移到packagereference
后),已安装的NuGet包将列在References
下,无法查看解析的依赖项。但是对于 new-sdk 项目,VS 的解决方案资源管理器会在Dependencies
下列出它,现在可以展开它,您可以看到已解决的依赖项。按照设计,应该是。
【讨论】:
以上是关于在非 sdk 项目中使用时无法解决 NuGet 包依赖关系,但在 sdk 项目中可以正常工作的主要内容,如果未能解决你的问题,请参考以下文章
无法删除 MSVS 2019 中解决方案的已安装 Nuget 包