在非 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 项目中可以正常工作的主要内容,如果未能解决你的问题,请参考以下文章

在解决方案中的项目上使用时缺少 NuGet 包

无法删除 MSVS 2019 中解决方案的已安装 Nuget 包

Nuget包安装错误 - 无效的URI:无法解析权限/主机

如何解决 Visual Studio 中的“NuGet 包还原失败”?

构建项目得到错误“无法转换类型的对象......”

从 TFS 读取时未安装 NuGet 包