使用dotnet pack打包多个程序集

时间:2017-06-23 17:51:16

标签: package .net-core nuget-package

正如问题所说,我如何使用dotnet pack打包多个项目/程序集?

将VS2017与新的csproj文件一起使用。

2 个答案:

答案 0 :(得分:12)

在csproj文件中包含所需的程序集

  <ItemGroup>
    <Content Include="bin\Release\net46\Newtonsoft.Json.dll">
      <PackagePath>lib\net46\</PackagePath>
      <Pack>true</Pack>
    </Content>
  </ItemGroup>

如果您想要从解决方案中包含程序集,也可以采用相同的方式执行此操作,但要将依赖项排除到另一个nuget包,请使用 PrivateAssets 标记

  <ItemGroup>
    <Content Include="bin\Release\net46\My.Contracts.dll">
      <PackagePath>lib\net46\</PackagePath>
      <Pack>true</Pack>
    </Content>
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="My.Contracts.csproj">
      <PrivateAssets>all</PrivateAssets>
    </ProjectReference>
  </ItemGroup>

答案 1 :(得分:5)

我已经深入研究了这个问题,而我工作的唯一方法就是创建自己的nuspec文件。我使用dotnet build -C release来构建单个项目,并使用我的nuspec文件将多个程序集拉入1个包中。

不幸的是,似乎dotnet包的重要思想是将每个项目与一个单独的dll相关联。如果您有多个项目,那么我们的想法是打包每个项目,并且仍然依赖于包引用。