.net core 如何将引用的项目打包到nuget包中?

.net core 如何将引用的项目打包到nuget包中?,.net-core,nuget,nuget-package,.net Core,Nuget,Nuget Package,我有一个C#解决方案,包含3个项目;Application.Server、Application.Client和Application.Common。服务器和客户端都有一个对common的项目引用 我想将服务器和客户端打包,以便我的组织中的其他团队可以使用它们。我已经设置了一些自动构建管道,它们为服务器和客户端发布nuget包。它们不打包或发布公共文件。当我检查nuget包时,我可以看到它们引用了公共包 我有没有办法让他们自己把这个项目建立起来?理想情况下,我不想发布公共包,因为它非常特定于我的

我有一个C#解决方案,包含3个项目;Application.Server、Application.Client和Application.Common。服务器和客户端都有一个对common的项目引用

我想将服务器和客户端打包,以便我的组织中的其他团队可以使用它们。我已经设置了一些自动构建管道,它们为服务器和客户端发布nuget包。它们不打包或发布公共文件。当我检查nuget包时,我可以看到它们引用了公共包

我有没有办法让他们自己把这个项目建立起来?理想情况下,我不想发布公共包,因为它非常特定于我的应用程序,而且它是其他部门可以独立使用的东西,这也没有什么意义。如果我能帮忙的话,我也不想担心额外的nuget包(事实上,常见的是几个项目)。

如果您的项目是“旧式的”//non-SDK/传统的csproj,如果任何项目使用nuget包,如果所有这些nuget引用都是使用
packages.config
定义的,然后使用您可以使用
nuget.exe包-includeReferencedProject
。但是,如果您的任何项目使用
PackageReference
定义其包引用(新的SDK样式项目只能使用PackageReference),则
nuget.exe pack
将无法正确为这些包创建nuget依赖项。对于SDK风格的多目标项目,
nuget pack
可能会完全失败

打包使用
PackageReference
的项目或任何SDK样式的项目的唯一受支持的方法是使用NuGet的MSBuild pack目标(或
dotnet pack
MSBuild-t:pack
)。然而

如果您的项目是SDK风格的,那么创建和发布一个或多个包就不会再困难了。只需在您的解决方案上运行
dotnet-pack
,每个可打包的项目都会打包(请记住将您不想成为包的任何类库项目标记为不可打包)。然后使用您最喜欢的脚本语言查找并发布所有nupkg文件。例如(
Get ChildItem-Recurse-Filter*.nupkg$SLN_DIR | ForEach对象{&dotnet-nuget-push$}
,或者将所有nupkg复制/移动到一个地方(或者使用适当的设置使nuget首先在那里创建包),然后使用
dotnet-nuget-push*.nupkg


NuGet团队建议每个程序集使用一个程序包,并且该工具会自动为项目引用创建NuGet依赖项,因此这一切都是开箱即用的。要创建包含所有程序集的程序包,而不是NuGet依赖项,需要您做大量的工作。

也许您想使用PrivateAssets=“all”供您的项目参考?它与以下答案非常相似:“NuGet团队建议每个程序集使用一个程序包”-您是否有该建议的链接?