正如问题所说,我如何使用dotnet pack打包多个项目/程序集?
将VS2017与新的csproj文件一起使用。
答案 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相关联。如果您有多个项目,那么我们的想法是打包每个项目,并且仍然依赖于包引用。