如何从 NuGet 包中私下引用另一个项目?

How to privately reference another project from a NuGet package?

我正在寻找一种方法来 'privately' 引用 MSBuild 项目,这样它就不会显示给 NuGet 包的用户。例如,假设我有两个库,LibFooLibBar。它们被组织在一个单一的解决方案下,如下所示:

Foobar.sln
|
---- LibFoo.csproj
|
---- LibBar.csproj

现在,假设 LibFoo 引用 LibBar。当我去构建 LibFoo 时,也构建了 LibBar。生成的二进制文件都包含在 LibFoo 的输出目录中。当我 nuget pack 它们并将所有内容作为 NuGet 包的一部分包含在目录中时,LibBar 的二进制文件也包含在内。

最后,当最终用户安装 LibFoo 时,NuGet 会继续并引用包中的所有内容,包括 LibBar

有什么办法可以防止这种情况发生吗?

我想直接排除一个dll是不可能的,但你可以明确指定应该引用哪些程序集。这反过来会做你想要的,因为所有未指定的程序集都不会添加为参考。

看看这个section of the nuget docs