请问在 .net core 2.0 中如何将 2 个 .csproj 项目生成的 dll 打包在 1 个 nuget 包中?
github中的相关issue:ProjectReference Type = project does not add the DLL to the parent .nupkg
今天终于找到了一个变通的解决方法:
1)在 ProjectReference 中添加 PrivateAssets 配置,它会发挥2个作用,一是在 build 时将所引用项目的 .dll 文件复制到当前项目的 bin 文件夹,二是在 .nuspec 的 dependency 中不包含 ProjectReference 中所引用的项目。
2)通过 _PackageFiles 配置将所引用项目的 .dll 文件在 dotnet pack 时添加到 nuget 包中
示例 .csproj 配置如下:
<ItemGroup>
<ProjectReference Include="..\Infrastucture\Cnblogs.UCenter.Cache\Cnblogs.UCenter.Cache.csproj">
<PrivateAssets>all</PrivateAssets>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<_PackageFiles Include="$(OutputPath)\Cnblogs.UCenter.Cache.dll">
<BuildAction>None</BuildAction>
<PackagePath>lib\netstandard2.0\</PackagePath>
</_PackageFiles>
</ItemGroup>
怎么关注问题。。。
浏览次数后面有个 灰色的五角星
@BUTTERAPPLE: 好隐蔽。
http://www.cnblogs.com/webenh/p/7099838.html
可以试试新建一个空项目,把要用到的dll添加到这个空项目中去。发布这个空项目到nuget。
在 cnblogs.all.nuspec 文件里面把 dll 都写到 file 节点就可以了。
执行 nuget.exe pack cnblogs.all.nuspec
参考 https://docs.microsoft.com/zh-cn/nuget/schema/nuspec
1 <?xml version="1.0"?> 2 <package > 3 <metadata> 4 <id>CNBlogs.All</id> 5 <version>1.0.0</version> 6 </metadata> 7 <files> 8 <file src="ProjectA\bin\A.dll" /> 9 <file src="ProjectB\bin\B.dll" /> 10 <file src="OutPut\bin\CNBlogs*.dll" /> 11 </files> 12 </package>