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

已内嵌依赖项目DLL的Nuget包安装时提示找不到依赖包如何解决

问题根因

默认使用dotnet pack或VS打包功能时,项目引用会被自动识别为Nuget依赖项写入包的nuspec声明中。即便你已经手动将ProjectB的DLL打包进了ProjectA的lib目录,安装ProjectA时Nuget仍会优先尝试拉取声明的依赖项,也就是ProjectB的Nuget包,因此才会触发找不到包的报错。

解决方案

按以下步骤修改ProjectA的csproj配置,重新打包即可:

步骤1:修正ProjectReference节点配置

找到你现有配置中ProjectB的项目引用段,替换为如下内容:

<ProjectReference Include="..\Common\Com.Company.ProjectB.csproj">
  <PrivateAssets>all</PrivateAssets>
</ProjectReference>
  • <PrivateAssets>all</PrivateAssets>的作用是告诉Nuget打包时,该项目引用属于私有依赖,不要作为公开依赖项写入nuspec的依赖列表中,安装ProjectA时就不会再尝试拉取ProjectB的Nuget包。
  • 你之前写的<IncludeAssets>Com.Company.ProjectB.dll</IncludeAssets>是错误配置,IncludeAssets仅接受compile、runtime、build这类预设值,不需要指定具体DLL名称,直接删除即可。

步骤2:保留现有打包复制逻辑

你现有配置中的CopyProjectReferencesToPackage目标可以正常工作,作用就是将项目引用的输出DLL打包到Nuget包对应的lib目录下,不需要修改,直接保留即可。

步骤3:重新打包验证

重新生成ProjectA的Nuget包,打开包内的Com.Company.ProjectA.nuspec文件检查,<dependencies>节点下将不再出现Com.Company.ProjectB的依赖声明,同时lib目录下仍保留ProjectB的DLL。此时再在ProjectC中安装新的ProjectA Nuget包就不会触发报错,运行时也能正常加载ProjectB的DLL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:15:02