从多个项目创建 NuGet 包,包括 NuGet 依赖项

Create NuGet package from multiple projects, including NuGet dependencies

我有一个解决方案,我想从其中两个项目创建一个 NuGet 包。

如果它只是一个项目,我会使用 .csproj 文件来指定 NuGet 打包程序,但由于我想将两个不同的项目放入完成的包中,所以我不能这样做。

我创建了一个引用两个项目的 DLL 的 NuSpec 文件,然后在命令行中使用 -IncludeReferencedProjects 开关将其打包。这包括来自同一解决方案的引用项目,但不包括作为项目依赖项的任何 NuGet 包。

我尝试在另一个解决方案中引用新的 NuGet 包,并构建了解决方案 运行,但是在 运行 时遇到了 FileNotFoundException,当时它正在从 NuGet 包中寻找 DLL是我刚刚创建的 NuGet 包中的依赖项。

我意识到我可以在 NuSpec 文件中包含 NuGet 依赖项,但是当我的一个项目添加另一个 NuGet 引用时,这将变得过时。

是否可以设置 NuSpec 文件,以便它使用我的两个项目中的 .csproj 文件并正确设置 NuGet 依赖项,即使项目更新了新的 NuGet 依赖项?

嗯,据我了解你有两个项目,foo.csproj 和 bar.csproj。 foo 引用 bar.

您应该使用 nuget pack foo.csproj -IncludeReferencedProjects(注意 pack 命令应用于 foo)因为 IncludeReferencedProjects 选项还会添加引用项目的依赖项。
这导致 foo.dll 和 bar.dll 出现在 foo 包的 lib 文件夹中。此外,foo 和 bar 依赖项都将出现在 dependencies 元素下。