长话短说:共享项目不会,而且实际上也不能那样工作。
在 Visual Studio 中,共享项目只是文件(源代码、资源等)的容器,您可以将其添加到其他项目中。在某些情况下,当您希望在多个项目中拥有相同的代码(等等)而不将该代码放入库中时,这可能很有用。
共享项目没有引用,没有 NuGet 包或任何东西,只有它们包含的文件。他们甚至没有编译它们包含的任何源文件所需的配置数据,如果共享项目未包含在某种完整的项目中,编译器将不会对内容进行太多验证。
由于共享项目无法指定引用或包,因此您需要将这些引用和包添加到链接到共享项目的每个项目中。如果你错过了一个,编译器会很快告诉你。
虽然在共享项目中有引用会很好,但事实证明它并没有您想象的那么简单。同一个共享项目可以包含在针对不同框架、平台和架构的项目中。假设您正在构建一些将在 iOS、Mono、Windows .NET Framework 和 .NET Core 上运行的代码,其中包含每个目标的特定代码和一些共享代码。如果您尝试将 NuGet 依赖项添加到共享项目中,它至少会在您面前炸毁其中一个。与大多数参考文献相同。添加 .NET Core 所需的所有引用,突然其他项目无法编译。