You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PackageReference时NuGet包在非SDK项目无法解析依赖,SDK项目正常

NuGet包在非SDK风格项目中无法解析依赖问题解决方案

问题根因

非SDK风格项目(多为.NET Framework项目,即便采用PackageReference管理包)对NuGet包的目录结构合规性要求远高于SDK风格项目,你当前的包结构不符合NuGet官方约定,导致非SDK项目无法识别包内的程序集引用。
你当前的包结构如下,存在两处不合规问题:

dog.1.0.0.0
      - packages
      - dog.dll
  1. 程序集dog.dll直接放在包根目录,未放入约定的lib\{目标框架代号(TFM)}子目录下。SDK风格项目的NuGet解析逻辑做了兼容性降级处理,可 fallback 到根目录查找程序集,但非SDK项目的解析逻辑只会扫描lib下匹配项目目标框架的子目录,找不到dll自然无法添加引用。
  2. 根目录的packages文件夹不属于NuGet官方约定的包内有效目录,不会被解析逻辑识别。如果该文件夹存放的是你当前包依赖的其他NuGet包,不应该直接打包到当前包内,而是需要通过包元数据声明依赖。

修复步骤

  1. 调整NuGet包目录结构,符合官方约定,示例结构如下:
dog.1.0.0.nupkg(解压后根目录)
└── lib
    ├── net48 // 对应你支持的.NET Framework 4.8目标框架,可替换为实际的TFM
    │   └── dog.dll
    └── net6.0 // 对应你支持的.NET 6目标框架,无需支持可删除
        └── dog.dll
  1. 删除包根目录的packages文件夹,如果dog.dll依赖其他NuGet包,在打包所用的.nuspec文件或者SDK风格类库项目的.csproj文件中添加对应依赖声明,NuGet打包时会自动将依赖信息写入包元数据,安装时会自动拉取对应依赖包。
  2. 重新打包后安装到非SDK项目测试,即可正常解析依赖。

内容的提问来源于stack exchange,提问作者Darksilence

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:54:04