.NET Framework DLL上传私有NuGet后第三方依赖缺失问题
问题根因与修复方案
你遇到的第三方程序集、自身程序集无法被引用的问题由两处核心配置错误导致:
1. 核心问题原因
你当前nuspec的<files>节点仅打包了两个第三方依赖DLL,完全没有包含你自身项目编译生成的Tools.dll,这是导致安装包后无有效引用的最核心原因。
同时你显式声明了<references>节点,此时NuGet只会将你列在该节点内的DLL自动添加到项目引用,未列入的DLL即使被打包到lib目录也不会被自动引用。
你遇到的NU5128警告属于规范类警告,不影响包的安装使用,和引用失效问题无关。
2. 修复步骤
按如下规则修改你的nuspec配置即可:
第一步:补全自身程序集的打包规则
在<files>节点新增你项目编译输出的主DLL,推荐使用相对路径避免不同设备编译路径不兼容:
<files> <file src="Premiata.png" target="images" /> <!-- 新增:打包自身项目输出的主程序集,src路径改为你实际的编译输出路径 --> <file src="bin\Release\Tools.dll" target="lib/net462" /> <file src="C:/worksrc/DotNet/Librerie/Newtonsoft.Json/Newtonsoft.Json.dll" target="lib/net462" /> <file src="C:/worksrc/DotNet/SuiteLibrary/BINARY46/hasp_net_windows.dll" target="lib/net462" /> </files>
第二步:补全引用列表
在<references>节点新增自身主程序集的声明:
<references> <group targetFramework="net462"> <!-- 新增:自身主程序集引用 --> <reference file="Tools.dll" /> <reference file="Newtonsoft.Json.dll" /> <reference file="hasp_net_windows.dll" /> </group> </references>
第三步:消除NU5128警告
该警告是因为旧版icon放置规则不符合当前NuGet规范,修改<metadata>下的icon路径即可:
<icon>images/Premiata.png</icon>
补充说明
如果你的项目还有Tools.pdb调试符号文件、Tools.xml注释文件需要一起打包,也可以在<files>节点同步添加对应路径的配置即可。
内容的提问来源于stack exchange,提问作者IssamTP
相关产品推荐
相关产品推荐

