C#在共享项目中使用引用/类库

C#在共享项目中使用引用/类库,c#,.net,visual-studio,shared-project,C#,.net,Visual Studio,Shared Project,我刚刚在visual studio 2017中学习并创建了一个共享项目。我注意到共享项目没有引用其他资源(其他项目、类库等)的“引用”。我甚至看了一下.shproj文件,发现它只导入了我在共享项目中创建的类 我的问题是,如果我想创建一个外接程序应用程序,我需要使用类库调用源软件公开的必要API。 如何将其他项目/类库(或一般资源)引用/添加到共享项目中?或者说这有可能吗 这里也描述了我的部分问题 但我需要一个更普遍的解决方案。谢谢大家的帮助。您需要在使用共享项目的项目中添加引用 例如,假设您有一

我刚刚在visual studio 2017中学习并创建了一个共享项目。我注意到共享项目没有引用其他资源(其他项目、类库等)的“引用”。我甚至看了一下.shproj文件,发现它只导入了我在共享项目中创建的类

我的问题是,如果我想创建一个外接程序应用程序,我需要使用类库调用源软件公开的必要API。 如何将其他项目/类库(或一般资源)引用/添加到共享项目中?或者说这有可能吗

这里也描述了我的部分问题


但我需要一个更普遍的解决方案。谢谢大家的帮助。

您需要在使用共享项目的项目中添加引用


例如,假设您有一个引用“共享项目B”的“项目A”,您需要在“共享项目B”中使用Newtonsoft.Json。由于您无法添加对共享项目的引用,您将Newtonsoft Nuget包安装到项目a,您在“共享项目B”中的代码将自动编译。

长话短说:共享项目没有,而且实际上无法以这种方式工作

在VisualStudio中,共享项目只是文件(源代码、资源等)的容器,您可以将这些文件添加到其他项目中。在某些情况下,如果您希望在多个项目中使用相同的代码(等等),而无需将该代码放入库中,这可能非常有用

共享项目没有引用,没有NuGet包或任何东西,只有它们包含的文件。它们甚至没有编译包含的任何源文件所需的配置数据,如果共享项目没有包含在某种完整项目中,编译器也不会对内容进行太多验证

由于共享项目没有任何指定引用或包的方法,因此您需要将这些引用和包添加到链接到共享项目的每个项目中。如果你错过了一个,编译器会很快告诉你


虽然在共享项目中有引用会很好,但事实证明,这并不像你想象的那么简单。相同的共享项目可以包含在针对不同框架、平台和体系结构的项目中。假设您正在构建一些将在iOS、Mono、Windows.NET Framework和.NET Core上运行的代码,其中包含每个目标的特定代码和一些共享代码。如果你试图在共享项目中添加一个NuGet依赖项,那么它至少会在其中一个项目上爆炸。与大多数参考文献相同。添加.NET Core所需的所有引用,其他项目突然无法编译。

谢谢您的解释。我只是尝试了一下,并注意到,即使我没有向我的共享项目添加任何引用或NuGet,我仍然可以使用引用了shred项目的其他项目的引用中所需的API。这是否意味着共享项目本身没有任何引用,但它可以使用引用它的其他项目(共享项目)的所有引用的API?是的,因为共享项目被添加到完整项目中,所以它可以访问该项目中的所有其他内容,包括引用和包。包含共享项目的项目必须满足共享项目中代码的任何依赖关系(参考和包)。