我这里有个进程间通信组件,用于提供多应用间通信的解决方案。
进程间通信,分为客户端和服务端,俩端肯定会有些共性代码,所以加了个H3C.Channel.Core项目
因为之前还不太了解nuget这块,然后我就踩到了坑:
引用H3C.Channel.Client包后,H3C.Channel.Core代码竟然没有默认打包到Client的Nuget包内部。
当时项目忙,没时间关注这块,就临时搞了个H3C.Channel.Core包,所以进程间通信就有三个Nuget包
但用一段时间,会发现真的烦。。。每次都要更新3个nguet包(程度员是最不喜欢重复工作量的)
今天终于有时间看这个心病。网上看了相关博客,好像是可以解决的,emmm。。。我也来操作下
项目引用的生成文件复制操作(以下复制即可):
1 <PropertyGroup> 2 <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput> 3 </PropertyGroup> 4 <Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences"> 5 <ItemGroup> 6 <BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))" /> 7 </ItemGroup> 8 </Target> 9 <ItemGroup> 10 <ProjectReference Include="..\H3C.Channel.Core\H3C.Channel.Core.csproj" > 11 <PrivateAssets>all</PrivateAssets> 12 </ProjectReference> 13 </ItemGroup>View Code
俩个重点:
- CopyProjectReferencesToPackage - build 出来的 dll 程序集文件打包进 nupkg 文件
- PrivateAssets - 引用所有文件
我们尝试下,生成新的nuget看看。通过VS查看测试类ChannelDemoTest,反编译后dll的位置,是okay的:
减少打包依赖后,减少了后续的维护成本(重复工作):
注:此博客没啥技术含量,只是用来记录我的辛酸泪(我的博客很多是类似水文,记录型的)
标签:间通信,H3C,复合,Nuget,打包,Core,Channel From: https://www.cnblogs.com/kybs0/p/16633273.html