Visual Studio 2022打包NuGet包时未包含解决方案内依赖DLL的问题求助
Visual Studio 2022打包NuGet包时未包含解决方案内依赖DLL的问题求助
各位大佬,我最近遇到个NuGet打包的棘手问题,折腾好几天了,想请教下大家怎么解决:
- 我有一个.NET Core 6的类库解决方案,主项目是
XxxApi,它依赖同解决方案里的另外两个类库YyyRepository和ZzzShared - 我把
XxxApi打包成NuGet包后,解压发现只有XxxApi.dll在lib/net6.0目录里,虽然nuspec里已经声明了那两个依赖,但客户端引用这个包时会报错找不到这两个DLL - 目前只有把
YyyRepository和ZzzShared也单独打包成NuGet包放到本地源,客户端才能正常构建,但这两个DLL本来就是和XxxApi绑定在一起的,单独打包完全没必要啊
我当前使用的nuspec内容如下:
<?xml version="1.0" encoding="utf-8"?> <package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd"> <metadata> <id>XxxApi</id> <version>1.0.0</version> <title>API to XXX database</title> <authors></authors> <description>A programmable Api that can be used to query and update tables in the XXX database.</description> <copyright>xxx (c) 2023</copyright> <tags>API XXX Database</tags> <dependencies> <group targetFramework="net6.0"> <dependency id="YyyRepository" version="1.0.0" exclude="Build,Analyzers" /> <dependency id="ZzzShared" version="1.0.0" exclude="Build,Analyzers" /> <dependency id="Microsoft.EntityFrameworkCore" version="7.0.5" exclude="Build,Analyzers" /> <dependency id="Microsoft.EntityFrameworkCore.SqlServer" version="7.0.5" exclude="Build,Analyzers" /> <dependency id="Microsoft.Extensions.Configuration.FileExtensions" version="7.0.0" exclude="Build,Analyzers" /> <dependency id="Microsoft.Extensions.Configuration.Json" version="7.0.0" exclude="Build,Analyzers" /> </group> </dependencies> </metadata> <files> <file src="C:\DEV\Dis\XxxApi\XxxbApi\bin\Release\net6.0\win-x64\XxxApi.dll" target="lib\net6.0\XxxApi.dll" /> </files> </package>
我试过的操作和遇到的困境:
- 手动编辑nuspec的
<files>节点添加那两个DLL,但下次打包时这些修改就丢了,因为nuspec是自动生成的 - 查了不少资料,大多是老版本VS/.NET的解决方案,感觉不太适用现在的VS2022和.NET 6环境
- 还有人说要一个DLL对应一个NuGet包,但这对我的场景来说完全不合理啊
按道理来说,打包NuGet包时默认应该把同解决方案里的依赖DLL包含进去才对吧?有没有大佬遇到过同样的问题,知道怎么才能把YyyRepository和ZzzShared的DLL直接打包到XxxApi的NuGet包里,而且不用每次手动改nuspec?
备注:内容来源于stack exchange,提问作者Mark Worrall




