首页 新闻 会员 周边 捐助

.net core中如何将2个.csproj打成1个nuget包

0
悬赏园豆:50 [已解决问题] 解决于 2018-08-12 18:29

请问在 .net core 2.0 中如何将 2 个 .csproj 项目生成的 dll 打包在 1 个 nuget 包中?

dudu的主页 dudu | 高人七级 | 园豆:30778
提问于:2017-11-07 16:35
< >
分享
最佳答案
0

今天终于找到了一个变通的解决方法:
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>
dudu | 高人七级 |园豆:30778 | 2018-08-12 18:27
其他回答(4)
0

怎么关注问题。。。

长蘑菇星人 | 园豆:1832 (小虾三级) | 2017-11-07 16:38

浏览次数后面有个 灰色的五角星

支持(0) 反对(0) BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2017-11-07 16:41

@BUTTERAPPLE: 好隐蔽。

支持(0) 反对(0) 长蘑菇星人 | 园豆:1832 (小虾三级) | 2017-11-07 16:42
0

http://www.cnblogs.com/webenh/p/7099838.html

fcyh | 园豆:568 (小虾三级) | 2017-11-07 20:36
0

可以试试新建一个空项目,把要用到的dll添加到这个空项目中去。发布这个空项目到nuget。

收获园豆:10
Catcher8 | 园豆:364 (菜鸟二级) | 2017-11-08 09:02
0

在 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>
收获园豆:40
路人路人 | 园豆:296 (菜鸟二级) | 2017-11-16 17:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册