NuGet包含依赖DLL但还原失败问题求助
解决思路及步骤
核心问题
你的Proj D打包后,NuGet包的.nuspec文件(或项目文件的PackageReference节点)仍保留了对Proj A、B、C的依赖声明,导致安装时NuGet会尝试从源拉取这些包——即便lib目录里已经存在对应的DLL。
具体解决方法
修改Proj D的项目文件
打开Proj D的.csproj(或.vbproj)文件,找到对Proj A、B、C的项目引用节点,添加PrivateAssets="All"并明确IncludeAssets范围,确保这些项目的输出仅作为Proj D的私有资产,不会被传递为NuGet依赖。示例配置:<ProjectReference Include="..\ProjA\ProjA.csproj"> <PrivateAssets>All</PrivateAssets> <IncludeAssets>compile; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </ProjectReference>清理NuSpec文件的依赖项
如果你是手动编写.nuspec文件打包,检查<dependencies>节点,删除其中关于Proj A、B、C的所有条目,只保留Proj D真正需要的第三方NuGet包依赖。重新打包并验证
重新打包Proj D后,将NuGet包重命名为.zip格式解压,打开内部的.nuspec文件确认:<dependencies>中无Proj A、B、C的依赖声明lib文件夹下确实包含这三个项目的DLL文件
清理本地NuGet缓存
执行命令清除本地缓存,避免旧包干扰:dotnet nuget locals all --clear也可在Visual Studio中通过「工具」→「NuGet包管理器」→「包管理器设置」→「清除所有NuGet缓存」操作。
测试安装
将新打包的NuGet包添加到本地测试源(如本地文件夹源),在目标项目中安装,确认不会再尝试拉取Proj A、B、C的NuGet包。
内容的提问来源于stack exchange,提问作者Vic
相关产品推荐
相关产品推荐

