如何将依赖类库包含进.NET Core 3.1类库的NuGet包中?
解决方案:将项目引用嵌入NuGet包
方法一:通过Visual Studio配置(推荐)
- 右键解决方案里的
MyPackage项目,选择编辑项目文件(也可以先卸载项目再编辑.csproj文件) - 在文件中找到
ReferencedClassLibrary的引用节点,修改成以下内容:
<ProjectReference Include="..\ReferencedClassLibrary\ReferencedClassLibrary.csproj"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <Pack>true</Pack> </ProjectReference>
- 保存文件后,右键
MyPackage项目重新选择Pack生成NuGet包,此时ReferencedClassLibrary的dll会被直接嵌入到MyPackage的nupkg中,安装时不会再依赖外部源的包
方法二:用NuGet.exe打包(适合复杂场景)
- 确保已安装NuGet.exe,打开命令行进入
MyPackage项目的根目录 - 执行以下打包命令,强制包含引用项目:
nuget pack MyPackage.csproj -IncludeReferencedProjects
- 生成的nupkg会自动把
ReferencedClassLibrary的内容打包进去,无需额外配置
错误原因说明
出现NU1101错误是因为默认打包逻辑会把项目引用识别为NuGet包依赖,但ReferencedClassLibrary并没有发布到你的NuGet源里,所以安装时找不到。通过上述两种方式,能把引用项目的输出直接嵌入当前NuGet包,而非作为外部依赖。
内容的提问来源于stack exchange,提问作者Simon Elms
相关产品推荐
相关产品推荐

